ActionListener

6 respostas
L

Tenho duas classes que extende o JFrame (TelaLogin e TelaPrincipal)

Na TelaLogin, possui um JButton chamado "ok", este botão tem o seguinte código:

ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaLogin tlog = TelaLogin();
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();  

  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();
}});

Meu método Main está na classe TelaPrincipal. Ele chama a TelaLogin:

public static void main(String[] args) {      
		JFrame Janela = new TelaLogin();
       Janela.setVisible(true);
       WindowListener x = new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               System.exit(0);
           }
       };
    Janela.addWindowListener(x);
	
}

Quando compilo a TelaPrincipal, exibe a TelaLogin. Quando clico no botão ok exibe a TelaPrincipal, até aii é exatamente o que quero fazer!!

Meu problema é que quando clico no botão ok, a TelaLogin não fecha, exibe as duas telas uma em cima da outra.

Gostaria de saber se possui outro comando alem do
Tela.removeAll();
ou
remove(Tela);
, para que eu remova a TelaLogin quando executar o botão ok.

Acredito que meu método actionListener está usando componentes do "awt", minhas instancias são todas "swing", para não haver problemas, possui um método actionListener próprio da swing??

6 Respostas

E

Pra que serve removeAll?
Ele não faz o que você quer que seja feito e sim uma outra coisa que não tem nada a ver com o que você quer fazer.
Isso é mania de usar o Auto-Complete da IDE.
A tela TelaLogin tem de chamar dispose(), isso sim.

L

Em vez de tlog.removeAll();, coloquei tlog.dispose(); continua do mesmo jeito.

Este comando limpa todos os componentes dentro de um Container ou Tela.

Ex: Caso vc queira colocar um login e senha dentro de um panel, este comando remove todos os componentes dentro deste panel!

lalau
LucasVilarim:
Tenho duas classes que extende o JFrame (TelaLogin e TelaPrincipal)

Na TelaLogin, possui um JButton chamado "ok", este botão tem o seguinte código:

ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaLogin tlog = TelaLogin();
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();  

  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();
}});

Meu método Main está na classe TelaPrincipal. Ele chama a TelaLogin:

public static void main(String[] args) {      
		JFrame Janela = new TelaLogin();
       Janela.setVisible(true);
       WindowListener x = new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               System.exit(0);
           }
       };
    Janela.addWindowListener(x);
	
}

Quando compilo a TelaPrincipal, exibe a TelaLogin. Quando clico no botão ok exibe a TelaPrincipal, até aii é exatamente o que quero fazer!!

Meu problema é que quando clico no botão ok, a TelaLogin não fecha, exibe as duas telas uma em cima da outra.

Gostaria de saber se possui outro comando alem do
Tela.removeAll();
ou
remove(Tela);
, para que eu remova a TelaLogin quando executar o botão ok.

Acredito que meu método actionListener está usando componentes do "awt", minhas instancias são todas "swing", para não haver problemas, possui um método actionListener próprio da swing??

Boa noite
primeiro no seu codigo voce disse ter herdado o JFrame sendo assim tanto o seu frame TelaLogin e TelaPrincipal são JFrames; então porquê dar um new onde não é necessario?

TelaLogin tlog = TelaLogin(); // aque você esta criando outra telaLogin na telaLogin :D 
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();
que tal tentar isso.
ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();

 //depois de abrir a tela principal ele da um dispose no TelaLogin

  this.dispose();

}});

pelo que eu entendi deve ser isso valeu um abraço.

lalau
LucasVilarim:
Tenho duas classes que extende o JFrame (TelaLogin e TelaPrincipal)

Na TelaLogin, possui um JButton chamado "ok", este botão tem o seguinte código:

ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaLogin tlog = TelaLogin();
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();  

  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();
}});

Meu método Main está na classe TelaPrincipal. Ele chama a TelaLogin:

public static void main(String[] args) {      
		JFrame Janela = new TelaLogin();
       Janela.setVisible(true);
       WindowListener x = new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               System.exit(0);
           }
       };
    Janela.addWindowListener(x);
	
}

Quando compilo a TelaPrincipal, exibe a TelaLogin. Quando clico no botão ok exibe a TelaPrincipal, até aii é exatamente o que quero fazer!!

Meu problema é que quando clico no botão ok, a TelaLogin não fecha, exibe as duas telas uma em cima da outra.

Gostaria de saber se possui outro comando alem do
Tela.removeAll();
ou
remove(Tela);
, para que eu remova a TelaLogin quando executar o botão ok.

Acredito que meu método actionListener está usando componentes do "awt", minhas instancias são todas "swing", para não haver problemas, possui um método actionListener próprio da swing??

Boa noite
primeiro no seu codigo voce disse ter herdado o JFrame sendo assim tanto o seu frame TelaLogin e TelaPrincipal são JFrames; então porquê dar um new onde não é necessario?

TelaLogin tlog = TelaLogin(); // aque você esta criando outra telaLogin na telaLogin :D 
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();
que tal tentar isso.
ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();

 //depois de abrir a tela principal ele da um dispose no TelaLogin

  this.dispose();

}});

pelo que eu entendi deve ser isso valeu um abraço.

lalau
LucasVilarim:
Tenho duas classes que extende o JFrame (TelaLogin e TelaPrincipal)

Na TelaLogin, possui um JButton chamado "ok", este botão tem o seguinte código:

ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaLogin tlog = TelaLogin();
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();  

  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();
}});

Meu método Main está na classe TelaPrincipal. Ele chama a TelaLogin:

public static void main(String[] args) {      
		JFrame Janela = new TelaLogin();
       Janela.setVisible(true);
       WindowListener x = new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               System.exit(0);
           }
       };
    Janela.addWindowListener(x);
	
}

Quando compilo a TelaPrincipal, exibe a TelaLogin. Quando clico no botão ok exibe a TelaPrincipal, até aii é exatamente o que quero fazer!!

Meu problema é que quando clico no botão ok, a TelaLogin não fecha, exibe as duas telas uma em cima da outra.

Gostaria de saber se possui outro comando alem do
Tela.removeAll();
ou
remove(Tela);
, para que eu remova a TelaLogin quando executar o botão ok.

Acredito que meu método actionListener está usando componentes do "awt", minhas instancias são todas "swing", para não haver problemas, possui um método actionListener próprio da swing??

Boa noite
primeiro no seu codigo voce disse ter herdado o JFrame sendo assim tanto o seu frame TelaLogin e TelaPrincipal são JFrames; então porquê dar um new onde não é necessario?

TelaLogin tlog = TelaLogin(); // aque você esta criando outra telaLogin na telaLogin :D 
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();
que tal tentar isso.
ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();

 //depois de abrir a tela principal ele da um dispose no TelaLogin

  this.dispose();

}});

pelo que eu entendi deve ser isso valeu um abraço.

lalau
LucasVilarim:
Tenho duas classes que extende o JFrame (TelaLogin e TelaPrincipal)

Na TelaLogin, possui um JButton chamado "ok", este botão tem o seguinte código:

ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaLogin tlog = TelaLogin();
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();  

  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();
}});

Meu método Main está na classe TelaPrincipal. Ele chama a TelaLogin:

public static void main(String[] args) {      
		JFrame Janela = new TelaLogin();
       Janela.setVisible(true);
       WindowListener x = new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               System.exit(0);
           }
       };
    Janela.addWindowListener(x);
	
}

Quando compilo a TelaPrincipal, exibe a TelaLogin. Quando clico no botão ok exibe a TelaPrincipal, até aii é exatamente o que quero fazer!!

Meu problema é que quando clico no botão ok, a TelaLogin não fecha, exibe as duas telas uma em cima da outra.

Gostaria de saber se possui outro comando alem do
Tela.removeAll();
ou
remove(Tela);
, para que eu remova a TelaLogin quando executar o botão ok.

Acredito que meu método actionListener está usando componentes do "awt", minhas instancias são todas "swing", para não haver problemas, possui um método actionListener próprio da swing??

Boa noite
primeiro no seu codigo voce disse ter herdado o JFrame sendo assim tanto o seu frame TelaLogin e TelaPrincipal são JFrames; então porquê dar um new onde não é necessario?

TelaLogin tlog = TelaLogin(); // aque você esta criando outra telaLogin na telaLogin :D 
  tlog.removeAll();
  tlog.setVisible(false);
  tlog.validate();
que tal tentar isso.
ok.addActionListener(new java.awt.event.ActionListener()){
 public void actionPerformed(java.awt.event.ActionEvent evt){
  
  TelaPrincipal tp = new TelaPrincipal();
  tp.setVisible(true);
  tp.validate();

 //depois de abrir a tela principal ele da um dispose no TelaLogin

  this.dispose();

}});

pelo que eu entendi deve ser isso valeu um abraço.

Criado 26 de setembro de 2012
Ultima resposta 26 de set. de 2012
Respostas 6
Participantes 3