2010-11-21 3 views
0

私はスイングを使用してGUIで作業しています。 私は最初に2つの別々のパネルをロードしているメインクラスを持っています。私の最初のパネルには、パネルに埋め込まれたグリッドレイアウトであるtextFieldとボタン&があります。A1、A2、A3、... A9という番号の9つのボタンがあります。 私はこれらの両方が私のメインクラスから最初に読み込まれたと言った。GridLayoutパネルのボタンのテキストは、実行時に更新されます

実行後、私は私の別々のパネルを見ています。今度はパネル1(テキストフィールドとボタンを持っています)から、数字A1のようなテキストを入力します。私が望むのは、2番目のパネルのボタンの色が変わることです。

私はfirstPanelのボタンにActionListinerを追加し、2番目のPanelの新しいインスタンスを作成しました。しかし、この方法でパネル2が複製されます。ですから、私はtextFieldに数値を追加し続けます。新しいパネルが表示されます。実行時に既存の第2パネルのボタンの色を更新するにはどうすればよいですか?

答えて

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); 
} 
のようなものがあるとし
関連する問題