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:有没有更好的办法? 展开
1:能不能再FrameA 中对C进行事件监听呢?给怎么做?
2:有没有更好的办法? 展开
5个回答
展开全部
你只有一个窗体,
你想要的就是在一个“窗体类”中,监听一个“监听事件类”的意思吗
只要把监听事件类写在窗体类中,不就行了吗?
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布局的代码
}
}
}
你想要的就是在一个“窗体类”中,监听一个“监听事件类”的意思吗
只要把监听事件类写在窗体类中,不就行了吗?
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布局的代码
}
展开全部
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();
}
}
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();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在另一个类中,实现Get方法,或者将按钮设为public。
然后,在本类中实现监听接口,将另一个类中的按钮的监听接口设为本类
然后设置发送的ActionCommand
然后,在本类中实现监听接口,将另一个类中的按钮的监听接口设为本类
然后设置发送的ActionCommand
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写回调函数,即那个按钮的事件回调你的想调的方法,或者弄一个共享变量,当按钮事触发就改变该值,然后弄一个线程一直监视该变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询