InternalFrame em branco

8 respostas
evertonsilvagomesjav

Pessoal, to fazendo testes aqui com InternalFrame, alguem sabe me ajudar ou me dizer pq meu InternalFrame esta em branco? E tudo que add nele nao aparece? kkk

Aqui chama meu InternalFrame:

package com.gui;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

import net.miginfocom.swing.MigLayout;

public class GUI extends JFrame {

	JDesktopPane desk;
	JPanel panel;
	
	public static void main(String[] args) {
		
		EventQueue.invokeLater(new Runnable(){

			@Override
			public void run() {
				
				new GUI().setVisible(true);
				
			}
					
		});
		
	}
	
	public GUI(){
			
		this.initFrame();
	
		this.pack();
		
		this.setExtendedState(MAXIMIZED_BOTH);
		
	}
	
	public void initFrame(){
			
		this.desk = this.getDesktopPane();
		
		this.panel = this.getPanel();
					
		this.setContentPane(this.panel);
		
		JMenuBar menuBar = new JMenuBar();
		this.setJMenuBar(menuBar);
		
		JMenu menu = new JMenu("Teste");
		menuBar.add(menu);
		
		JMenuItem menuItem = new JMenuItem("Internal");
		menuItem.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				
				GUI.this.panel.add(GUI.this.desk, "dock center");
			}
			
		});
		
		menu.add(menuItem);
		
	}
	
	public JPanel getPanel(){
		
		JPanel panel = new JPanel();
		
		MigLayout mig = new MigLayout("","[grow]", "[grow]");
		
		panel.setLayout(mig);
		
		return panel;
		
	}
	
	public JDesktopPane getDesktopPane(){
			
		Internal internalFrame = new Internal();
        				
        this.desk = new JDesktopPane();
      
        this.desk.add(internalFrame);
        
        internalFrame.setVisible(true);
		
		return desk;		
	}
	
}

Meu InternalFrame:

package com.gui;

import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import net.miginfocom.swing.MigLayout;

public class Internal extends JInternalFrame {

	Internal(){
		
		this.setVisible(true);
		
		//this.setMaximizable(this.maximizable);
		
		this.initInternal();
		
		this.setResizable(false);
		
	}
	
	public void initInternal(){
		
		JLabel label = this.getLabel();
		label.setName("Nome: ");
		
		JTextField text = this.getTextField();
		
		
		JPanel panel = this.getPanel();
		panel.add(label);
		panel.add(text);
		
		this.setContentPane(panel);
				
		
	}
	
	public JLabel getLabel(){
		
		JLabel label = new JLabel();
		
		return label;
		
	}
	
	public JPanel getPanel(){
		
		JPanel panel = new JPanel();
		
		panel.setLayout(new MigLayout("", "[grow]", "[grow]"));
		
		return panel;
	}
	
	public JTextField getTextField(){
		
		JTextField textField = new JTextField();
		
		return textField;
		
	}
}

8 Respostas

evertonsilvagomesjav

Veja como ta:


evertonsilvagomesjav

Alguem da uma moralzinha?

Eric_Yuzo

O fundo branco deve ser do desktopPane. Imagino que o internalFrame não esteja nem aparecendo.

Tenta setar o tamanho na Internal com setSize pra ver no que resulta.

evertonsilvagomesjav

Mas o negocio é que eu quero o Inetrnal full, porém quando eu utilizo o seMaximum(true), resulto em um NullPointer nao sei pq.

Eric_Yuzo

Fiz um teste aqui invocando setMaximum(true) no construtor do JInternalFrame e apontou o NullPointerException.

A exceção parou de ocorrer quando chamei o método depois de adicionar o internalFrame no desktopPane:

this.desk.add(internalFrame); try { internalFrame.setMaximum(true); } catch (PropertyVetoException e) { e.printStackTrace(); } internalFrame.setVisible(true);

evertonsilvagomesjav

Eric Yuzo:
Fiz um teste aqui invocando setMaximum(true) no construtor do JInternalFrame e apontou o NullPointerException.

A exceção parou de ocorrer quando chamei o método depois de adicionar o internalFrame no desktopPane:

this.desk.add(internalFrame); try { internalFrame.setMaximum(true); } catch (PropertyVetoException e) { e.printStackTrace(); } internalFrame.setVisible(true);

Opa, ja ajudou, agora veja como ficou, te um pequeno espaço nas bordas do InternalFrame sabe como faço pra preencher todo o espaço?


Eric_Yuzo

Não sei te explicar porque, pois nunca tinha usado o MigLayout.

Mas setando o Layout do JPanel como BorderLayout, o pequeno espaço some.

PS. Vivendo e aprendendo. Achei bem legal o MigLayout. Depois vou estudar melhor sobre o assunto.

Valeu…

evertonsilvagomesjav

Eric Yuzo:
Não sei te explicar porque, pois nunca tinha usado o MigLayout.

Mas setando o Layout do JPanel como BorderLayout, o pequeno espaço some.

PS. Vivendo e aprendendo. Achei bem legal o MigLayout. Depois vou estudar melhor sobre o assunto.

Valeu…

Conseguir resolver aqui brother hehe. O espaço la e normal por causa que esta adicionando meu Desktop dentro de um Panel ai fica aquele espaço mesmo.

Ai eu adicionei meu DesktopPane direto no Frame.

Criado 6 de setembro de 2010
Ultima resposta 7 de set. de 2010
Respostas 8
Participantes 2