2012-03-02 18 views
0

私は、コンボボックスに指定された値のいずれかに従ってjtextfieldの数を表示しようとしています。JComboboxとJTextfield

だから、1から4と言うとドロップダウンメニューが表示されます。ユーザーが3を選択すると、3つのテキストフィールドが表示されます。私は数字の選択とjcomboboxを作成しました。しかし、私はどのようにこれを実装するか分からない。私は間違っていない場合、私は私がするJComboBoxののItemListenerオブジェクトに利用できるようになりますJTextFieldのオブジェクトへの参照を作成する必要があると思う

ItemEvent.SELECTED 

を使用する必要があります。

ご協力いただければ幸いです。

私は私のクラスにこれを追加しました:

// aOption is the combobox I declared 
aOptionComboBox.setModel(new DefaultComboBoxModel(new String[]{"1","2","3"})); 

public void itemStateChanged(ItemEvent event) { 

    String num = (String)aOptionComboBox.getSelectedItem(); 
    int num1 = Integer.parseInt(num); 
    JTextField[] textfields = new JTextField[num1]; 

    for (int i = 0; i < num1; i++) 
    { 
     textfields[i] = new JTextField("Field"); 
     getContentPane().add(textfields[i]); 
     textfields[i].setBounds(200, 90, 100, 25); 

    } 
} 

私は正しい軌道に乗っていますか?

+0

* "私は正しいトラックにいますか?" *おそらく、コードで 'setBounds'が使用されているとします。 ***レイアウトを使用する***。また、早くより良い助けを得るために、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

あなたが試したときに何が起こったか:-)ヒント:以前に追加されたフィールドを削除したいと思うかもしれません。また、これが宿題の場合は、 – kleopatra

+1

「正しい軌道にいるのですか?」というタグを付けてください。その答えは間違っています。あなたのforループの中では、@AndrewThompsonがあなたにアドバイスしたように、** setBounds **を使用しないでください。しかし、あなたがまだそれを使用している場合、作成している 'JTextFields'のすべてが、同じ場所にある別のものの上に置かれるわけではありません。それで、あなたの 'JFrame'には何人がいるのでしょうか? –

答えて

1

コンボボックスでgetSelectedItem()を使用します。これは文字列または整数を生成します(実装方法によって異なります)。次に、forループを使用してJTextFieldの量を判断し、配列に格納します。

この方法で、テキストフィールドを簡単に保存してパネルに追加することができます。

いくつかの追加情報です。

textfield-arrayはeventListenerの外部でアクセス可能でなければならないため、クラスに実装する必要があります。クラス全体がそれを使用することができます。

+0

私は私のクラスにこれを追加しました: 公共ボイドが{ /* aOption私は aOptionComboBox.setModel(新規たDefaultComboBoxModel(新しいString [] { "1"、」宣言したコンボボックスである(ItemEventでイベントを)のitemStateChanged 2 "、" 3 "})); */ 文字列num =(String)aOptionComboBox.getSelectedItem(); int num1 = Integer.parseInt(num); JTextField [] textfields = new JTextField [num1]; for(int i = 0; i nothingme

+0

@nothingmeあなたの質問にそのコードを編集してください(そしてコードフォーマットを使用してください)。現時点では判読不能です。 –