java怎么实现对另一个类中的按钮监听?

我有一个Frame A,A 中有一个卡片布局,panel B是其中的一个卡片,panel B中有一个按钮C,我想怎么能当我点击C后,A的卡片布局换成另一个卡片panel?
1:能不能再FrameA 中对C进行事件监听呢?给怎么做?
2:有没有更好的办法?

你只有一个窗体,

你想要的就是在一个“窗体类”中,监听一个“监听事件类”的意思吗

只要把监听事件类写在窗体类中,不就行了吗?

class GameState_Begin extends Frame
{
//构造器
public GameState_Begin()
{
Button btn1=new Button("开始游戏");
super.add(btn1);

btn1.addActionListener(new ButtonListen());
}

//●●●●●内部类:按钮事件监听
class ButtonListen implements ActionListener
{
public void actionPerformed(ActionEvent arg0) {

//改变panel布局的代码

}

}
}追问

我是写的两个类,panel B 也是一个类,不是直接加入到FRAME A 中的 而是当做A的一个卡片

追答

你看这样行不

先在第一个类中,定义一个全局的布尔值,public boolean bool =false;
panel B这个类监听的是按钮C这个事件,当这个事件被触发时,改变这个全局的布尔值为true

class ButtonListen implements ActionListener
{ public void actionPerformed(ActionEvent arg0) {

//●●●●●改变第一个类中的bool值
第一个类.bool=true;

}
}

再在第一个类中,写一个布尔值为真的判断
if(bool){
//改变panel布局的代码
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-12
A的卡片布局换成另一个卡片panel,用卡片布局里的cardl.show(panel,"b");语句就可以了,我给你个例子,你看看。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Guess {
private JFrame frame = new JFrame("不说?!");
private Container container = frame.getContentPane();
private JPanel panel = new JPanel();
private JPanel pane1 = new JPanel();
private JPanel pane2 = new JPanel();
private JButton button1 = new JButton("Kiss Me");
private JButton button2 = new JButton("Back,and...");
private JLabel label = new JLabel("Yes, you are sussesed!");
private CardLayout cardl = new CardLayout();

Guess() {
container.setLayout(new BorderLayout());
panel.setLayout(cardl);
container.add(panel,BorderLayout.CENTER);
pane1.setLayout(new FlowLayout(FlowLayout.LEFT));
pane2.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(pane1,"a");
panel.add(pane2,"b");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cardl.show(panel,"b");
frame.setTitle("oh! Yes.");
}
});
pane1.add(button1);
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
cardl.show(panel,"a");
frame.setTitle("还是不说?");
}
});
pane2.add(label);
pane2.add(button2);
frame.setSize(300,200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public static void main(String[] args) {
Guess g = new Guess();
}
}本回答被提问者采纳
第2个回答  推荐于2017-09-04
在另一个类中,实现Get方法,或者将按钮设为public。
然后,在本类中实现监听接口,将另一个类中的按钮的监听接口设为本类
然后设置发送的ActionCommand
第3个回答  2015-07-31
写回调函数,即那个按钮的事件回调你的想调的方法,或者弄一个共享变量,当按钮事触发就改变该值,然后弄一个线程一直监视该变量。
第4个回答  2012-04-27
调用而已
相似回答