Eu tenho um programinha com varias telas que podem ser abertas, todas sendo JFrame’s. O fato é que enche a “Barra de Tarefas” do SO (qq um, Windows, Linux) com aquele monte de botoes dos JFrame’s. E o pior é que o usuario pode ficar clicando de um lado pra outro, as vezes sem querer, e se perde nas telas. Tem como aparecer apenas um botao de janela na “Barra de Tarefas”?
Nao fica esquisito isso? Pois tenho o segte: um menu principal e varios JFrames de telas de cadastro. Como ficaria este monte de Frames dentro do menu principal?
Na verdade, se pelo menos conseguisse fazer o JFrame MODAL, ja seria menos pior, apesar que continuaria a poluicao na Barra de Tarefas…
Eu implementei o menu principal com o JDesktopPane dentro assim:
public class JPrincTab extends JFrame {
JDesktopPane desktop;
…
public JPrincTab(String titulo, …) {
super(titulo);
desktop = new JDesktopPane();
setContentPane(desktop);
getContentPane().setLayout(new GridBagLayout());
setExtendedState(JFrame.MAXIMIZED_BOTH);
setLocationRelativeTo(null);
…
}
…
}
Em seguida, ao chamar as telas de cadastro, ao inves de dar o frame.show(), eu criei um metodo frame.showframe() assim:
public class JFrameTab extends JInternalFrame implements ActionListener {
public void showframe(JPrincTab princtab, boolean mdi) {
try {
if (!mdi)
princtab.getdesktop().removeAll();
princtab.getdesktop().add(this);
setSelected(true);
show();
} catch (Exception e) { e.printStackTrace(); }
}
}
O fato é que esta funcionando tudo dentro do frame principal, ou seja, resolveu meu problema inicial… contudo, quando eu arrasto a janela, para qualquer lugar, de uma hora para outra reinicia a maquina. Estou rodando a aplicacao com JDK 1.4.2_02 por dentro do NetBeans 3.6. Sera que este negocio de arrastar janelas tem da problema no DesktopPane ou é o meu codigo que esta deixando o Java maluco?
Existem topicos antigos ae que falam de JInternalFramel modal. Mas acho qd se usa JInternalFrame já tem a ideia de poder mexer com varias janelas ao mesmo tempo.Voce poderia usar JDialog.
Tendo uma JFrame principal que chamava os JDialogs modal.