所以我知道如何制作按钮网格,但实现中发生的情况是,一旦将按钮添加到框架/面板中,就不能将其称为JButton对象。我的问题是,当我创建一个充满按钮的网格并将它们添加到面板中时,如何在单击时更改按钮背景或边框?
public GridTest(int rows, int cols) {
Container pane = getContentPane();
pane.setLayout(new GridLayout(rows, cols));
String[] labels = {"A", "B", "C"};
for (int i = 0; i < labels.length; i++) {
JButton button = new JButton(labels[i]);
pane.add(button);
}
}
单击按钮时,如何将“A”标签的背景设置为红色?
if ("A".equals(actionCommand)) {...}
答案 0 :(得分:1)
您可以遍历窗格中的所有组件,并且(如果可能)将它们转换为JButton。
for (Component c : pane.getComponents()) {
if (c instanceof JButton) {
JButton b = (JButton) c;
// Now you can do whatever you want with b.
// For example: b.setBackground(Color.red)
}
}
答案 1 :(得分:0)
如果您打算对点击事件采取行动来修改源按钮,那么最佳做法也是最简单的:
使用ActionListener:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AbstractButton btnSource = ((AbstractButton)e.getSource());
// handle btnSource
}
});
如果您还想修改其他组件,您可以随时将它们添加到内部容器(例如:ArrayList)并将它们组合成逻辑单元。
然后,您可以根据需要对该逻辑单元做出反应。