Boa Tarde Galera, sou iniciante em java e tenho essa duvida…
possuo um JFrame principal q nela abro JInternalFrames da seguinte maneira:
public void AbrirAtendimento(String numero) {
if (numero == null) {
System.out.println("Cancelou");
} else if (numero.equals("")) {
System.out.println("Vazio");
} else {
this.addTelaDesk(new Atendimento(numero));
}
}
[code]public void addTelaDesk(JInternalFrame tela) {
for (JInternalFrame jInternalFrame : this.desktop.getAllFrames()) {
// se uma janela semelhante estiver aberta
if (jInternalFrame.getClass().toString().equalsIgnoreCase(tela.getClass().toString())) {
jInternalFrame.moveToFront(); // traz janela para frente para facilitar a escolha
Object[] opções = {"Utilizar Aberta", "Abrir Nova"};
int qst = JOptionPane.showOptionDialog(null, "Abrir uma nova janela ou utilizar a que ja esta aberta?",
"Janela duplicada",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
opções,
opções[0]
);
// se utilizar a aberta retorna e não abre outra,
// caso contrário sai do for e abre outra igual
if (qst == 0) {
jInternalFrame.dispose(); //fecha janela aberta
this.desktop.add(tela); //adiciona na tela
tela.setVisible(true); // seta visivel
return;
} else if (qst == 1) {
break;
}
}
}
this.desktop.add(tela); //adiciona na tela
tela.setVisible(true); // seta visivel
this.cascade(); //coloca em cascata para deixar "pratico"
}
private void cascade() {
JDesktopPane desk = this.desktop; // JDesktopPane
int separation = 25; // distancia entre as janelas
// Pega todos os frames e organiza, o ultimo fica mais em baido e mais pra cima
int i = desk.getAllFrames().length; // quantidade de frames
for (JInternalFrame f : desk.getAllFrames()) {
f.setLocation(i * separation, i * separation);
i--; //mutiplicador
}
}[/code]
E em certo momento da aplicação abre um JDialog que eu gostaria que executasse esse metodo na classe principal, estou fazendo da seguinte maneira, mais da erro:
[code]
public static Principal principal;
public void AbrirAtendimento2(String numero) {
principal.AbrirAtendimento(numero);
dispose();
}[/code]
Por um evento na própria classe principal ele funciona normalmente, mais se vor tentar abrir o JInternalFrame pelo JDialog usando o codigo acima nao funciona.
agradeço
vlw