假设您在NxN网格中有一个JButton的GridLayout,其代码如下:
JPanel bPanel = new JPanel(); bPanel.setLayout(new GridLayout(N, N, 10, 10)); for (int row = 0; row < N; row++) { for (int col = 0; col < N; col++) { JButton b = new JButton("(" + row + ", " + col + ")"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); bPanel.add(b); } }
如何通过setText()单独访问网格中的每个按钮以更改按钮的名称?这需要在实际按下相关按钮之外进行。
因为每个按钮在本地实例化为“ b”,所以当前无法获得每个按钮的全局可访问名称。如何独立访问每个按钮?像JButton [] []这样的数组可以容纳对所有按钮的引用吗?如何在上面的代码中进行设置?
任何输入表示赞赏。
谢谢。
您可以,
1) putClientProperty
putClientProperty
buttons[i][j].putClientProperty("column", i); buttons[i][j].putClientProperty("row", j); buttons[i][j].addActionListener(new MyActionListener());
和
public class MyActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton btn = (JButton) e.getSource(); System.out.println("clicked column " + btn.getClientProperty("column") + ", row " + btn.getClientProperty("row")); }
2)ActionCommand