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

Java GridLayout面板按钮运行时文本更新,java,swing,layout,Java,Swing,Layout,我正在使用swing开发GUI。 我有一个主类,从那里我开始加载两个独立的面板。我的第一个面板有一个文本字段和一个按钮&第二个面板是嵌入在面板中的网格布局,如编号为A1、A2、A3、A9的9个按钮。 正如我所说,这两个函数最初都是从我的主类加载的 现在在执行之后,我看到了两个单独的面板。现在从面板1(有文本字段和按钮)我把一些文本放在那里,例如数字A1。我想要的是第二个面板上按钮的颜色应该改变 我在第一个面板的按钮上添加了一个ActionListiner,并创建了第二个面板的新实例。但这样,面板

我正在使用swing开发GUI。 我有一个主类,从那里我开始加载两个独立的面板。我的第一个面板有一个文本字段和一个按钮&第二个面板是嵌入在面板中的网格布局,如编号为A1、A2、A3、A9的9个按钮。 正如我所说,这两个函数最初都是从我的主类加载的

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


我在第一个面板的按钮上添加了一个ActionListiner,并创建了第二个面板的新实例。但这样,面板2重复。所以,当我继续在文本字段中添加数字时,我看到了新的面板。如何在运行时更新现有的第二个面板按钮颜色?

我想您有类似的功能

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);
}
JPanel panel2=新的JPanel(新的网格布局(3,3));
JButton[]按钮=新JButton[9];
//实例化按钮并将其添加到网格面板
对于(int i=0;i<9;++i){
按钮[i]=新的JButton(“A”+(i+1));
面板2.添加(按钮[i]);
}
....
已执行无效操作(操作事件e){
字符串文本=((JTextField)e.getSource()).getText();
//简单地说,我假设输入总是正确的,并且是“An”的形式,其中n是数字
//将字符串转换为索引以引用数组中的正确按钮
int=Integer.parseInt(text.substring(1,2));
按钮[which].setBackground(颜色.红色);
}