检查(多个Jbutton中的哪个Jbutton被单击)>

问题描述 投票:0回答:3

我正在制作棋盘游戏,一帧具有64个JButton的8X8矩阵。到目前为止,我的代码是这样的:

public class Main {
static JFrame f  = new JFrame();;
static JButton btn;
static JButton btnTemp;


    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setLayout((new GridLayout(8,8)));//size of the board
    f.setTitle("ex");
    f.setSize(800,800);

for (int i=0;i<=7;i++)
    {
        for (int j = 0; j<=7;j++)
        {

            btn=new JButton();
            btn = new JButton(new SoliderW());  
            btn.setName("btn"+i+""+j);
            btn.setBackground(Color.BLACK); 
            btn.addActionListener(actionListener); // make a listener to the button
            f.add(btn);
            }

    }


    f.setVisible(true);

我正在尝试使用此代码来确定单击了哪个JButoon:

Component[] components = f.getContentPane().getComponents();


    ActionListener actionListener = new ActionListener()
    {
      @Override
        public void actionPerformed(ActionEvent e)
         {
              System.out.println("Hello");
          }
     };

       for (Component component : components)
          {
               if (component instanceof JButton)
                  {
                  ((JButton) component).addActionListener(actionListener);
                  }
          }

但是,我不知道如何知道单击了哪个Jbutton。

我正在制作一个棋盘游戏,在一个框架中具有64个JButton的8X8矩阵。到目前为止,我的代码是这样的:public class Main {static JFrame f = new JFrame();;静态JButton btn;静态JButton btnTemp; ...

java swing user-interface jframe jbutton
3个回答
1
投票

static开头不是您的朋友,应该避免使用它,尤其是当您尝试跨对象边界引用实例时。


1
投票

您也可以在侦听器中执行此操作:


0
投票

int index = list.indexOf(src);建议的实现MVC Pattern可以如下进行:有一个MadProgrammer类,其中包含视图(gui)所需的所有信息。有一个Model类,使用该模型来显示gui。有一个View类可以控制模型和视图。

© www.soinside.com 2019 - 2024. All rights reserved.