我正在使用swing进行GUI。 我有一个主要类,我最初在哪里加载两个单独的面板。我的第一个面板有一个textField和一个按钮&第二个面板是嵌入在面板中的网格布局,如编号为A1,A2,A3,... A9的9个按钮。 所以我说最初这两个都是从我的主班加载的。
现在执行后,因为我看到我的两个单独的面板。现在从面板1(有文本字段和按钮)我在那里放了一些文本,例如数字A1。我想要的是第二个面板上的按钮颜色应该改变。
我做了什么我在第一个面板的按钮上添加了一个ActionListiner并创建了第二个面板的新实例。但这种方式与Panel 2重复。因此,当我继续在textField中添加数字时,我会看到新的面板。如何在运行时更新现有的第二个面板按钮颜色?
答案 0 :(得分:1)
我想你有类似
的东西JPanel panel2 = new JPanel(new GridLayout(3,3));
JButton[] buttons = new JButton[9];
// instantiate buttons and add them to grid panel
for (int i = 0; i < 9; ++i) {
buttons[i] = new JButton("A"+(i+1));
panel2.add(buttons[i]);
}
....
void actionPerformed(ActionEvent e) {
String text = ((JTextField)e.getSource()).getText();
//simplified, I assume input is always correct and in the form of "An" where n is the digit
// convert the string to an index to reference the correct button in array
int which = Integer.parseInt(text.substring(1,2));
buttons[which].setBackground(Color.RED);
}