java中怎样为多个按钮设置监听

在设置布局的时候我用了for循环设置了9个按钮,但是这9个按钮是没有命名区别的,都是btn,我应该怎么给他们设置监听呢?达到的效果是当按下按钮之后按钮上的符号变反,代码如下:

import javax.swing.*;
import java.awt.*;
public class One{
public static void main(String[] args) {
JFrame f=new JFrame("JAVA小游戏");
//设置f布局管理器为3行3列,组件间水平和垂直间距都为2
f.setLayout( new GridLayout(3,3,2,2));
for(int i=0;i<9;i++){
if(i%2==0){
JButton btn=new JButton("+");
f.add(btn);
}
else{
JButton btn=new JButton("-");
f.add(btn);
}
}
f.setSize(300,200);
f.setVisible(true);
f.setResizable(false);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class One
{
    public static void main(String[] args)
    {
        JFrame f = new JFrame("JAVA小游戏");
        // 设置f布局管理器为3行3列,组件间水平和垂直间距都为2
        f.setLayout(new GridLayout(3, 3, 2, 2));
        for(int i = 0; i < 9; i++)
        {
            if(i % 2 == 0)
            {
                JButton btn = new JButton("+");
                btn.addMouseListener(new MouseMonitor(btn));
                f.add(btn);
            }
            else
            {
                JButton btn = new JButton("-");
                btn.addMouseListener(new MouseMonitor2(btn));
                f.add(btn);
            }
        }
        f.setSize(300, 200);
        f.setVisible(true);
        f.setResizable(false);
    }
    
    
}

class MouseMonitor extends MouseAdapter
{
    JButton jbt;
    public MouseMonitor(JButton x)
    {
        this.jbt = x;
    }
    public void mouseClicked(MouseEvent e)
    {
        jbt.setText("-");
    }
}

class MouseMonitor2 extends MouseAdapter
{
    JButton jbt;
    public MouseMonitor2(JButton x)
    {
        this.jbt = x;
    }
    public void mouseClicked(MouseEvent e)
    {
        jbt.setText("+");
    }
}

刚学的AWT,Swing没学,试了下,能达到效果。

追问

你的方法是可以实现的,但是我想了一下,你的代码还可以优化一下的:

btn.addMouseListener(new MouseMonitor(btn,false));


然后MouseMonitor和MouseMonitor2类可以合并的:

追答

嗯嗯,我也知道可以优化,但是不知道有getActionCommand()这个方法(还是看了slplele的答案才知道的),和楼主一样,同新手。。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-11
每一个按钮对应一个监听的方法。
多个就各自对应自己监听的方法。

如果是多个想对应一个只要把每一个按钮的监听的方法指向同一个监听方法
第2个回答  2014-08-12
for(int i=0;i<9;i++){
    JButton btn =null;
    if(i%2==0){
btn=new JButton("+");
f.add(btn);
    }
    else{
btn=new JButton("-");
f.add(btn);
    }
    btn.addActionListener(new ActionListener( ){
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand.equals("+")) {
                btn.setText("-");
            }
            else {
                btn.setText("+");
            }
        }
    });
}

追问

你的代码有错,你可以运行一下看。

追答

这是我徒手打的代码,没有在编译器里面打,难免有疏漏,在e.getActionCommand后面少了(),这种错误属于编译时异常,你把这段代码放到eclipse里面的时候,就会提示错误,你也说了,但是这种芝麻点大的错误你都解决不了??eclipse的报错提示都不会读?

追问

不管怎么样,十分感谢你的回答!

java中怎样为多个按钮设置监听
import javax.swing.*;import java.awt.*;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class One{ public static void main(String[] args) { JFrame f = new JFrame("JAVA小游戏"); \/\/ 设置f布局管理器为3行3列,组件间水平和垂直间距都为2 ...

JAVA里,一个窗口内有96个按钮,如何添加监听比较简单呢?一个一个添加...
button.setbounds(x,y,width,height);button[i].setVisible(true);\/\/向面板添加按钮 content.add(button);button[i].addActionListener(new ActionListener() { Override public void actionPerformed(ActionEvent arg0) { \/\/ TODO Auto-generated method stub } });...

JAVA 用for创建多个按钮,怎么对15号按钮设置监听事件? for(int i=0...
循环里加个判断就行了呀,还按你的例子:for(int i=0;i<20;i++){ JButton b=new JButton("mmm"+i);\/\/为15号按钮加事件 if (i == 15) { b.addActionListener(new ActionListener( ) { public void actionPerformed(ActionEvent e) { } }) ;} } ...

java 给按钮加监听的快捷键是什么???(快捷键加监听减少写代码的时间...
第一步 Window -->Preferences 打开配置 第二步 按照下图可以设置想要的快捷键

JAVA添加按钮监听器
private JButton button = null;private JFrame frame = null;public ShowButton(){ frame = new JFrame("显示按钮文字");button = new JButton("3");textField = new JTextField("",20);frame.setLayout(new FlowLayout(FlowLayout.CENTER));frame.add(textField);button.addActionListener(...

如何为JAVA中的轻量级组键添加兼听
;} 这一组的button都用的是buttonListener一个监听,你可以通过e.getActionCommand()这个字符串来获得当前是那个按钮被按下以便坐不同的处理。e.getActionCommand()分别是他们在数组中的下标序号的字符串形式。这样你就可以在一个监听中实现对一组按钮的控制,而不用对没一个按钮都分别进行监听。

java键盘事件,如何监听连续按两次按键?
import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.event.*;import javax.swing.*;public class KeyEventDemo extends JFrame implements KeyListener, ActionListener { JTextArea displayArea; JTextField typingArea;public static void main(String[] args) { javax.swing...

java中为什么要设置监听器,有什么用?
1、private JButton jb=new JButton("按钮");这句话声明了一个按钮,名字叫jb。2、jb.addActionListener(this);这里给jb那个按钮设置了监听,默认为点击触发,当然你写的这个监听有点怪异~3、点击按钮jb触发监听处理方法actionPerformed,在这里可以做你想要的操作,你代码实现的是改变lab这个label标签的内容。 4、...

java中按钮监听处理问题
\/\/定义的按钮,要全局的变量 private JButton submit= new JButton("确定");private JButton cancle = new JButton("取消");...监听的方法 public void actionPerformed(ActionEvent e) { \/\/获取事件源 JButton button ==(JButton)e.getSource());if(button == submit){ \/\/点击的是确定按钮...

JAVA中设置键盘事件监听者的方法是什么
方法一:从控制台接收一个字符,然后将其打印出来import java.io.*;public static void main(String [] args) throws IOException{ System.out.print("Enter a Char:"); char i = (char) System.in.read(); System.out.println("your char is :"+i); } 虽然此方式实现了从键盘获...

相似回答