1

ページでこの JComboBox を複数回作成するループを作成しようとしています。なぜこれがうまくいかないのですか?

        String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
        JComboBox numberbox = new JComboBox(numbers); 
     for(int j = 1; j <= 12; j++){
        numberbox[j].setLocation(103,j*30);
        numberbox[j].setSize(47,26);
        numberbox[j].setSelectedIndex(1);
        numberbox[j].setBackground(Color.WHITE);
        panelForTextFields.add(numberbox[j]);
        numberbox[j].addActionListener(this);
     }

ループ部分以外は動くコードだと思います。このコードのチャンクに置き換えると、希望どおりに機能する単一の JComboBox が出力されます。

        String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
        JComboBox numberbox = new JComboBox(numbers); 
        numberbox.setLocation(103,30);
        numberbox.setSize(47,26);
        numberbox.setSelectedIndex(1);
        numberbox.setBackground(Color.WHITE);
        panelForTextFields.add(numberbox);
        numberbox.addActionListener(this);

Eclipseで受け取るエラーは、「式の型は配列型でなければなりませんが、JComboBoxに解決されました」です

4

2 に答える 2

2

Eclipseで受け取るエラーは、「式の型は配列型でなければなりませんが、JComboBoxに解決されました」です

はい、numberbox変数は配列として宣言されていませんが、配列として使用しようとしているため、Java (Eclipse ではない) は、これを行うことはできないと正しく伝えています。最初に変数を配列として (またはおそらく として) 宣言し、次にfor ループ内でArrayList<JComboBox>JComboBoxを作成します。また、レイアウト マネージャーを使用して、コンポーネントの絶対配置を避けてください。

つまり、

String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
JPanel myGridLayoutUsingJPanel = new JPanel(new GridLayout(0, 1));
JComboBox[] combos = new JComboBox[MAX_COMBOS]; // MAX_... is a constant
for (int i = 0; i < combos.length; i++) {
  combos[i] = new JComboBox(numbers);
  combos[i].addActionListener(someActionListener);
  myGridLayoutUsingJPanel.add(combos[i]);
}

// add myGridLayoutUsingJPanel to the GUI...
于 2013-05-24T01:11:53.293 に答える
1

ループ内で同じ JCombobox を更新しています。別の JCombbox を作成して追加するには、new in te ループも実行する必要があります。更新されたコードは次のとおりです。

 String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
 JComboBox numberbox = null;
 for(int j = 1; j <= 12; j++){
    numberbox = new JComboBox(numbers); 
    numberbox.setLocation(103,j*30);
    numberbox.setSize(47,26);
    numberbox.setSelectedIndex(1);
    numberbox.setBackground(Color.WHITE);
    panelForTextFields.add(numberbox);
    numberbox.addActionListener(this);
 }
于 2013-05-24T01:13:11.220 に答える