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

2025-05-20 07:41:29
推荐回答(3个)
回答(1):

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没学,试了下,能达到效果。

回答(2):

每一个按钮对应一个监听的方法。
多个就各自对应自己监听的方法。

如果是多个想对应一个只要把每一个按钮的监听的方法指向同一个监听方法

回答(3):

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("+");
            }
        }
    });
}