Controle em outra classe

Olá pessoal, estou assistindo umas video-aula no youtube de Janela Swing e me deparei na seguinte duvída:

import javax.swing.;
import java.awt.
;

public class Eventos extends JFrame implements ActionListener {

public Eventos(){

	super("Minha Janela");

	JButton botao = new JButton("Clique");
	botao.addActionListener(this);
	getContentPane().add(botao);

	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setSize(300,300);
	setVisible(true);


}


public void actionPerformed(ActionEvent e){
	System.out.println("Clicou no Botao");
}


public static void main(String[] args){

	new Eventos();

}

}

No código acima eu implemento a interface na própria classe, porém tentei criar uma outra classe pra rescrever o método da interface mas estou tendo dificuldade de funcionar o botao botao.addActionListener() para que ele possa chamar e executar a ação do botao que neste caso seria imprimir o System.out.println.

Obrigado.

Está funcionando o codigo do jeito que voce esperava. Voce clica no botao e aparece no console Clicou no botao. Nessa outra classe voce faz a mesma coisa. implementa ActionListener com seu metodo actionPerfomed(). @Override

Voce devia ter colocado a classe/codigo que voce está tendo dificuldade…

Olá Jonas.

Criei esta outra classe pra reescrever o método da Interface.

import javax.swing.;
import java.awt.
;

public class Controle implements ActionListener{

    @Override
public void actionPerformed(ActionEvent e){
	System.out.println("Clicou no Botao");
}

}

Agora na classe view como eu chamaria este evento associado ao Botao?

JButton botao = new JButton(“Clique”);
botao.addActionListener(this);

Gostaria de saber como vou linkar este botao a o metodo que ele tem que executar na classe de cima.

Fiz esse exemplo, onde voce tem dois creditos para usar um controle e ligar duas TVs. Ve se ajuda


package PacoteTVs;

public class TVLG {

public static boolean ligada = false;

public void ligar() {
        System.out.println("Voce ligou a TV LG");
        ligada = true;
}

public void desligar() {
        System.out.println("Voce desligou a TV LG");
        ligada = false;
}

}


package PacoteTVs;

public class TVSmart {

public static boolean ligada = false;

public void ligar() {
        System.out.println("Voce ligou a TV SMART");
        ligada = true;
}

public void desligar() {
        System.out.println("Voce desligou a TV SMART");
        ligada = false;
}    

}


package PacoteTVs;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Teste extends JFrame implements ActionListener {

public Teste() {
    
super("Minha Janela");

JButton botao = new JButton("Clique");
botao.addActionListener(this);
getContentPane().add(botao);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
setVisible(true);
   
}


   public static void main(String[] args) {
    Teste inicia = new Teste();


    
}

@Override
public void actionPerformed(ActionEvent e) {
    if (TVLG.ligada == true) {
        TVLG  lg = new TVLG();
        lg.ligar();
        TVLG.ligada = true;
        System.exit(0);
    } else {
        TVSmart smart = new TVSmart();
        TVSmart.ligada = true;
        smart.ligar();
        TVLG.ligada = true;
        
    }
}

}

Consegui resolver …
Era só fazer isso pra poder chamar o método em outra classe:

JButton botao = new JButton(“Clique”);

botao.addActionListener(new Controle()); // Somente isso.

Obrigado Jonas pela atenção.

Consegui fazer desta forma, porém toda vez em que clico no botao ele duplica mais uma janela.Alguem sabe resolver este problema?

package InterfaceGrafica;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JanelaEventos extends JFrame {

JButton botaook = new JButton("Ok");
JButton botaocancel = new JButton("Cancel");
JTextField caixa = new JTextField("");



public JanelaEventos(){
	
	super("Janela Eventos");
	
	
	botaook.addActionListener(new InterfaceContole());
	
	botaocancel.addActionListener(new InterfaceContole());
	
	
	
	Container c = getContentPane();
	c.setLayout(new BorderLayout());
	Container c2 = new JPanel();
	c2.setLayout(new FlowLayout());
	c.add(caixa);
	c2.add(botaook);
	c2.add(botaocancel);
	c.add(BorderLayout.NORTH, caixa);
	c.add(BorderLayout.CENTER, c2);
	
	setVisible(true);
	setSize(300,300);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
}




public static void main(String[] args) {
	new JanelaEventos();

}

}

////-------------------------------------------------------------------
Outra classe que criei pra ActionListener

package InterfaceGrafica;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class InterfaceContole implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
	JanelaEventos bt = new JanelaEventos();
	
	
	if(e.getActionCommand().equals("Ok")){
		
		bt.caixa.setText("Clicou");
		bt.botaook.setText("Clicou");
				
	}else if(e.getActionCommand().equals("Cancel")){
		bt.caixa.setText("Clicou cancel");
	} 
	
	
	
	
	
}

}