2011-01-03 8 views
2

私はJavaには新しく、UIを設計するにはnetbeansを使用しています。である私は何をしようとしていますJava/swing形式の動的フィールドの追加

...形で

。 jComboBoxとJTextFieldがあり、そこではユーザが選択しているサービスと観測を入力できます。ここまでは順調ですね。 JComboBoxは、データベースエントリから読み込まれます。

問題は、ユーザーがN個の異なるサービスを一度に入力できることです(チェックボックスの数が多すぎます)。私は "[+]"ボタンを追加することを考えていた(削除のために " - "と一緒に)。したがって、ユーザーは[+]をクリックし、前の行の直下にjcombobox + jtextフィールドがある別の行をクリックします。

私はこの時点で固執しています。 [+]ボタンActionPerformedでは、以前のノードをクローンして追加することはできません。どのように進行するかについてのアイデア。

私の背景はwebdevです。 javascriptでこれを行うのは本当に速いでしょう。まあ、私はあなたがすでに何をしようとしているのか知っていると思います。いくつかの光を待っています。どうも。

答えて

5

あなたは正しい軌道に乗っています。ここでは基本的な考え方はするentrylistを表示する行を追跡するための責任があるということであるいくつかのsource code to give you some ideas alt text alt text

です。各行にはプラス/マイナスボタンがあり、実際の追加/削除をこのEntryListに委譲します。また、マイナス/プラスボタンを無効にする方法も公開されていますので、リストビューでは1つのエントリを削除しないようにすることができます(空のディスプレイを持たないように)。

これは完全には機能しません。新しい行が正しく表示されるようにフレームのサイズを変更する必要があることがわかります。しかし、これはあなたを始めるのに十分なはずです。

+1

神様のために、それはまさに私が探していたものです!どうもありがとうございました! – Dave

1

コンポーネントを水平に表示するレイアウトマネージャを使用するようにメインパネルを作成します。 Boxクラスはこのために使いやすいです。次に、表示するコンポーネントを含む新しいパネルを作成し、このパネルをメインパネルに追加します。次のようなもの:

JComboBox checkBox = new JComboBox(...); 
JTextField textField = new JTextField(...); 
JPanel row = new JPanel(); 
row.add(comboBox); 
row.add(textfield); 
mainPanel.add(row); 
mainPanel.revalidate(); 
+0

簡単な質問ですが、既存の要素をクローンすることはできますか?(JPanelの中​​にすべてがあり、JPanelのクローンを作成したいと思いますか?行のすべての要素を再作成するコードを記述する必要がありますか? – Dave

+0

必要なのは、コード内でコンポーネントを作成する方法だけです。 – camickr

関連する問題