複数のアイテムを選択してJava Swingでドロップダウンリストを作成する方法は?

StackOverflow https://stackoverflow.com/questions/2860250

質問

私は知っています JListJComboBox. 。複数の選択機能を備えたコンボボックスドロップダウン機能が必要です JList 提供します。

これは、リストの内容が大きすぎて簡単なリストを使用して表示できないためです。また、複数のアイテムを選択する必要があります。そうでなければ、満足していたでしょう JComboBox.

助言がありますか?

役に立ちましたか?

解決

マルチセレクトを使用する場合、コンボボックスよりもリストを使用する方が良いです。 GUIメタファーが進むにつれて、人々はコンボボックスがシングルセレクトであることを期待していますが、リストはどちらかです。

リストの内容は大きすぎて、簡単なリストを使用して表示できません

置きます JListJScrollPane. 。あなたは電話することができます 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つのタイプのイベントのみを処理することに制限する可能性があります)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top