我正在制作棋盘游戏,一帧具有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; ...
以static
开头不是您的朋友,应该避免使用它,尤其是当您尝试跨对象边界引用实例时。
您也可以在侦听器中执行此操作:
int index = list.indexOf(src);
建议的实现MVC Pattern可以如下进行:有一个MadProgrammer类,其中包含视图(gui)所需的所有信息。有一个Model
类,使用该模型来显示gui。有一个View
类可以控制模型和视图。