gpt4 book ai didi

java - 在 GridLayout JPanel 中访问本地定义的 JButton

转载 作者:行者123 更新时间:2023-12-03 19:04:43 25 4
gpt4 key购买 nike

假设您在 NxN 网格中有一个 JButtons 的 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

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

关于java - 在 GridLayout JPanel 中访问本地定义的 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com