Estou com uma duvida, no código abaixo tenho um jframe nele o menu , abaixo um jdesktoppane e nele um jinternalframe.Os menus abrem os 2 jinternal fremes, no menu tem um if que verifica se a janela ja esta aberta, caso esteja ele não abre uma cópia dela.
- 1° problema é que quando eu abro um jinternalframe e fecho, se tento abrir o mesmo de novo não consigo.(Resolvi fazendo um botão sair apenas alterando o setVisible() mas acho que isso não é a melhor maneira.
-2° como vcs podem ver eu abro o jinternalframe dentro do desktop porem eu crio ele no próprio arquivo e na hora de criar com o WindowBuilder e com o tando de jinternalframe que preciso foca inviável fazer assim.
Logo como eu faria pra fazer o jinternal frame numa classe separada(arquivo separado) e apenas chamar ele neste arquivo.
Segue código:
package hh;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class TesteInternalFrame extends JFrame {
JMenuItem mntmSair;
JMenuItem mntmInternal1;
JMenuItem mntmInternal2;
JDesktopPane desktopPane;
JInternalFrame internalFrame1;
JInternalFrame internalFrame2;
public static void main(String[] args) {
new TesteInternalFrame();
}
public TesteInternalFrame() {
//adicionando os Menus
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnArquivo = new JMenu("Arquivo");
menuBar.add(mnArquivo);
mntmSair = new JMenuItem("Sair");
mntmSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
mnArquivo.add(mntmSair);
JMenu mnInternalframes = new JMenu("InternalFrames");
menuBar.add(mnInternalframes);
mntmInternal1 = new JMenuItem("Internal1");
mnInternalframes.add(mntmInternal1);
mntmInternal1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(!internalFrame1.isVisible()){
internalFrame1.setVisible(true);
}
}
});
mntmInternal2 = new JMenuItem("Internal2");
mntmInternal2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(!internalFrame2.isVisible()){
internalFrame2.setVisible(true);
}
}
});
mnInternalframes.add(mntmInternal2);
//adicionando o desktopPane
desktopPane = new JDesktopPane();
getContentPane().add(desktopPane, BorderLayout.CENTER);
internalFrame1 = new JInternalFrame("Internal 1", true, true);
internalFrame1.setBounds(72, 42, 150, 100);
desktopPane.add(internalFrame1);
internalFrame2 = new JInternalFrame("Internal 2", true, true);
internalFrame2.setBounds(5, 5, 150, 100);
desktopPane.add(internalFrame2);
setVisible(true);
setSize(300,200);
}
}
