GridLayout面板按钮文本在运行时更新

时间:2010-11-21 18:28:16

标签: java swing layout

我正在使用swing进行GUI。 我有一个主要类,我最初在哪里加载两个单独的面板。我的第一个面板有一个textField和一个按钮&第二个面板是嵌入在面板中的网格布局,如编号为A1,A2,A3,... A9的9个按钮。 所以我说最初这两个都是从我的主班加载的。

现在执行后,因为我看到我的两个单独的面板。现在从面板1(有文本字段和按钮)我在那里放了一些文本,例如数字A1。我想要的是第二个面板上的按钮颜色应该改变。

我做了什么我在第一个面板的按钮上添加了一个ActionListiner并创建了第二个面板的新实例。但这种方式与Panel 2重复。因此,当我继续在textField中添加数字时,我会看到新的面板。如何在运行时更新现有的第二个面板按钮颜色?

1 个答案:

答案 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);
}