複数のアイテムを選択してJava Swingでドロップダウンリストを作成する方法は?
-
30-09-2019 - |
質問
私は知っています JList
と JComboBox
. 。複数の選択機能を備えたコンボボックスドロップダウン機能が必要です JList
提供します。
これは、リストの内容が大きすぎて簡単なリストを使用して表示できないためです。また、複数のアイテムを選択する必要があります。そうでなければ、満足していたでしょう JComboBox
.
助言がありますか?
解決
マルチセレクトを使用する場合、コンボボックスよりもリストを使用する方が良いです。 GUIメタファーが進むにつれて、人々はコンボボックスがシングルセレクトであることを期待していますが、リストはどちらかです。
リストの内容は大きすぎて、簡単なリストを使用して表示できません
置きます JList
で JScrollPane
. 。あなたは電話することができます setvisiblerowcount(int) に JList
一度にいくつの行を表示する必要があるかを指定するには。
他のヒント
コンボボックス用のカスタムセルレンダラーを作成し、そのコンポーネントにチェックボックスを追加できるため、チェックしてチェックすることができます。あなたはこのようなものを作らなければなりません:
public class MyComboBoxRenderer implements ListCellRenderer {
private String[] items;
private boolean[] selected;
public MyComboBoxRenderer(String[] items){
this.items = items;
this.selected = new boolean[items.lenght];
}
public Component getListCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int index) {
// Create here a JLabel with the text
// Create here a JCheckBox
// Add them to a layoutmanager
return this;
}
public void setSelected(int i, boolean flag)
{
this.selected[i] = flag;
}
}
データが階層的な文字を持っている場合は、NetBeansを検討してください。 Outline
コンポーネント、で議論されています 新しいスイングツリーテーブルの発表 そしてこれで 答え. 。これが次のとおりです 現在の開発バージョン APIの。
説明されている機能を達成するために、私はついに「乱用」することにしました JMenuBar
そしてそれにいくつか追加します JCheckBoxMenuItems
. 。 GUIは目的に完全に適合します(少なくとも私にとっては)、少し面倒になるのはリスクがあるItemEventの取り扱いだけです。
(最後に、私はアイテムについていくつかのビットロジックを定義し、その後、1つのタイプのイベントのみを処理することに制限する可能性があります)