Boa tarde galera, é o seguinte, apesar de ter lido varias informações sobre como chamar uma GUI(JInternalFrame) dentro de outra, não ficou bem claro para mim, o problema é que tenho aplicatico com uma GUI principal(JFrame), onde, esta chama outras GUI's(INternalFrame), entao tenho a seguinte situação, uma dessas GUI's, deve chamar outra GUI, contudo, esta dando erro (Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException), pelo li a respeito é problema com a refencia do meu JDesktopPane, criado na minha tela principal.
ai fica o problema como faço para chamar uma outra GUI, de dentro de outra GUI, vale lembrar q a GUI a ser chamada pode tb ser chamada da tela principal da aplicação,
desde ja agradeço..
tipo:public class TelaPrincipal extends JFrame implements ActionListener {
private JMenuItem formarGrade;// chama a tela para formar a grade atravez do JMenuBar
private JMenuItem mostrarGrade;//chama a tela mostrar grade, o usuario tem a opção nesta tela de chamar a tela formar grade
private JButton btFormarGrade;//chama a tela para formar a grade atravez do botao
private JButton btMostrarGrade;//chama a tela mostrar grade, o usuario tem a opção nesta tela de chamar a tela formar grade
private JDesktopPane desktop;
private TelaCadastroProfessor professor;//
private TelaCadastroAluno aluno;
protected TelaFormaGrade grade;
private TelaMostraGrade gradeAtual;
if(e.getSource()==btMostrarGrade||e.getSource()==mostrarGrade){
mostraGrade();
}
if(e.getSource()==btFormarGrade||e.getSource()==formarGrade){
mostrarFormarGrade();
}
//metodo que mostra o meu JInternalFrame selecionado
public void mostrarJanela(JInternalFrame frame) {
if (desktop.getComponentZOrder(frame) == -1) {
desktop.add(frame);
}
frame.setVisible(true);
frame.setBounds(0, 100, 795, 545);
try {
frame.setSelected(true);
} catch (PropertyVetoException ex) {
Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "Aqui deu erro!!!");
}
}
public void mostrarFormarGrade()
{//verifica se o JInternalFrame ja esta no desktop, senão instancia e acrescenta o mesmo
if (grade == null)
{
grade = new TelaFormaGrade();
}
mostrarJanela(grade);
}
}//fim da classe principal
public class TelaMostraGrade extends JInternalFrame implements ActionListener{
//nesta tela podera tambem ser chamada a tela para formar a grade
private TelaPrincipal mostra;
private TelaFormaGrade formaGrade;
private JDesktopPane desktopPai;
//aqui será invocado a tela para formar a grade
// e aqui é onde to levando a maior taca
//
if(e.getSource()==btnIncluirAluno)
{
if(formaGrade.getComponentZOrder(desktopPai)==-1)
{
JOptionPane.showMessageDialog(null,"teste");
mostra.mostrarJanela(formaGrade);
}
//mostra.mostrarJanela(formaGrade);//este metodo esta dentro da classe principal
mostra.mostrarFormarGrade();
}