2012-03-10 13 views
1

特定のボタンをクリックすると、パネルに別のボタンセットが追加されますが、これを行う瞬間に何度でも追加することができます一度しかできない。これを行う最善の方法は、whileループでボタンとフィールドを追加することですか?アプリケーションでJPanelに追加

if(e.getSource() == selectScript){ 

       while(scriptB < 1){ 
       imageID = new JTextField("INT"); 
       imageDescription = new JTextField("imgDescription"); 
       imagePath = new JTextField("imagePath"); 
       manageImageTab.add(imageID); 
       manageImageTab.add(imageDescription); 
       manageImageTab.add(imagePath); 
       insertImage = new JButton("Add an Image"); 
       insertImage.addActionListener(new dbaccess()); 
       manageImageTab.add(insertImage); 

       manageImageTab.revalidate(); 
       validate(); 
       scriptB++; 

       } 
} 
+0

-1(まだ、私には意図的に見える)Java命名規則に違反している – kleopatra

+0

@kleopatraは意図的ではなく、ただ同じアプリケーションが処理されています。 – Peddler

+1

質問を編集することができます(ヒント、ヒント:-)、あなたのコードをリファクタリングする必要があります – kleopatra

答えて

3

おそらく、というよりはJButtonが追加と削除、あなたがそれらを必要とするまで、ちょうどそれらを見えるようにしていない、または、おそらくより良いではありませんJPanelの上でそれらをすべて置き、コードの先頭でたら、ボタンを追加することができます目に見えるようにし、望むときに見えるようにする。ボタンとパネルを保持するコンテナにrevalidate()repaint()を呼び出すことを忘れないでください。

+0

私は一度追加し、必要なときに表示を設定するというアイデアが気に入っています。私はそれを取る、whileループで悪いアイデア/良い練習ではない? – Peddler

+0

@Peddler:私は「whileループでそれらを守る」ことは考えていませんが、私があなたがこれによって何を意味するかについての手がかりはほとんどないので、悪い考えです。 –

+0

申し訳ありませんが、フレーズが不十分です。ボタンの追加はwhileループ内にあり、ボタンが一度クリックされるとアクセスされません。 – Peddler

1

私が正しくあなたを理解していれば、私は偽から始まりalreadyAddedフラグを使用することになり、それはそれの後に追加することはできませんが、コントロールが追加された後、trueに設定されます。

関連する問題