Layouts + JDesktopFrame

3 respostas
C

Galera tô apanhando igual uma franga aqui… Hahaha…

Então, tenho uma aplicação desenvolvida em Eclipse que utiliza 1 JDesktopFrame dentro de um JFrame e vários JInternalFrames.
Como minha aplicação tem uma JToolBar e um JPanel (que simula uma StatusBar) eu preciso que a StatusBar fique sempre na parte inferior da janela. Bom, até ai tudo belezinha, utilizei o BorderLayout e minha ToolBar fica no NORTH e minha StatusBar na posição SOUTH.

Poxa, fica lindo… Independentemente do tamanho da janela ou qualquer outra coisa a ToolBar fica sempre no topo e a StatusBar sempre em baixo.

Ai vem o problema que está fritando meus neurônios: quando eu carrego qualquer JInternalFrame, ele abre maximizado.
Há alguma maneira de eu continuar utilizando o BorderLayout na minha aplicação, mas que meus JInternalFrames carreguem no tamanho que eu defino no setSize?

Antes de qualquer coisa: eu já tentei utilizar o .setResizable(false) no JInternalFrame, mas não resolveu.

Obrigado e um forte abraço!

3 Respostas

ViniGodoy

Estranho. Sempre usei JInternalFrame com BorderLayout (igual a você) e eles nunca abriram maximizados. Como você está fazendo para abrir as janelas?

C

Estou montanto meu JdesktopPane assim:

public class MDI extends Globais {
private static JToolBar toolBar = new JToolBar();
public static JFrame frmMDI = new JFrame("Escola Simples");
private static JPanel statusBar = new JPanel();

	public static void JanelaMDI() {
		Font fontePadrao = new Font("Verdana", 4, 11);

		JDesktopPane espacoMDI = new JDesktopPane();
		espacoMDI.setLayout(null);

		frmMDI.setLayout (new BorderLayout());

		// Ícone
		Toolkit kit = Toolkit.getDefaultToolkit();
		Image icone = kit.getImage(System.getProperty("user.dir")
				+ "/Imagens/Ícone/Escola_Simples.png");
		frmMDI.setIconImage(icone);

		frmMDI.setExtendedState(JFrame.MAXIMIZED_BOTH);
		frmMDI.setContentPane(espacoMDI);
		//frmMDI.add(espacoMDI, BorderLayout.CENTER);
		frmMDI.setSize(800, 600);
		frmMDI.setLocationRelativeTo(null);
		frmMDI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// -------------------------------------------------------------------
		// Barra de ferramentas

		toolBar.setSize(Toolkit.getDefaultToolkit().getScreenSize().width, 40);
		toolBar.setFloatable(false);

		// -------------------------------------------------------------------
		// StatusBar
		statusBar.setSize(Toolkit.getDefaultToolkit().getScreenSize().width, 24);
		statusBar.setBorder(BorderFactory.createLineBorder(Color.gray));
		statusBar.setLayout(null);

		// -------------------------------------------------------------------
		// Monta janela
		frmMDI.setJMenuBar(menuBar);
		frmMDI.add(toolBar, BorderLayout.NORTH);
		frmMDI.add(statusBar, BorderLayout.SOUTH);
		frmMDI.setVisible(true);
	}
}

E estou chamando meus JInternalFrames assim:

try {
	JInternalFrame janelaDiretoriaLocal = new DiretoriaLocal().frmDiretoriaLocal;
	frmMDI.add(janelaDiretoriaLocal);
	janelaDiretoriaLocal.setSelected(true);
	janelaDiretoriaLocal = null;
} catch (Exception e1) {
	System.out.println(e1.toString());
}
C

Não estou usando BorderLayout na JInternalFrame e sim no JFrame + JDesktopPane.

Abração!

Criado 5 de abril de 2010
Ultima resposta 5 de abr. de 2010
Respostas 3
Participantes 2