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

我有一个FrameA,A中有一个卡片布局,panelB是其中的一个卡片,panelB中有一个按钮C,我想怎么能当我点击C后,A的卡片布局换成另一个卡片panel?1:能不... 我有一个Frame A,A 中有一个卡片布局,panel B是其中的一个卡片,panel B中有一个按钮C,我想怎么能当我点击C后,A的卡片布局换成另一个卡片panel?
1:能不能再FrameA 中对C进行事件监听呢?给怎么做?
2:有没有更好的办法?
展开
 我来答
萧曼0n
2012-04-26 · TA获得超过379个赞
知道小有建树答主
回答量:225
采纳率:100%
帮助的人:212万
展开全部
你只有一个窗体,

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

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

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布局的代码
}
紫薇参星
科技发烧友

推荐于2017-10-12 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3547万
展开全部
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();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5811609
推荐于2017-09-04 · TA获得超过144个赞
知道答主
回答量:217
采纳率:0%
帮助的人:47.8万
展开全部
在另一个类中,实现Get方法,或者将按钮设为public。
然后,在本类中实现监听接口,将另一个类中的按钮的监听接口设为本类
然后设置发送的ActionCommand
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学尽天下学问
2015-07-31 · TA获得超过539个赞
知道小有建树答主
回答量:607
采纳率:36%
帮助的人:146万
展开全部
写回调函数,即那个按钮的事件回调你的想调的方法,或者弄一个共享变量,当按钮事触发就改变该值,然后弄一个线程一直监视该变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友363578a
2012-04-27 · TA获得超过193个赞
知道答主
回答量:170
采纳率:0%
帮助的人:101万
展开全部
调用而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式