私は知っているJList
とJComboBox
。提供する複数の選択機能を備えたコンボボックスのドロップダウン機能が必要JList
です。
これは、リストの内容が大きすぎて単純なリストでは表示できないためです。また、複数のアイテムを選択する必要があります。そうしないと、に満足していたでしょうJComboBox
。
助言がありますか?
私は知っている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;
}
}
データに階層的な特徴がある場合は、新しい Swing ツリー テーブルの発表とこの回答で説明されている NetBeans のOutline
コンポーネントを検討してください。APIの現在の開発バージョンは次のとおりです。
説明した機能を実現するために、最終的に を「悪用」し、JMenuBar
いくつかの を追加することにしましたJCheckBoxMenuItems
。GUIは(少なくとも私にとっては)目的に完全に適合します。少し面倒になるリスクがあるのは、ItemEventの処理だけです。
(最後に、項目に対していくつかのビット ロジックを定義し、1 つのタイプのイベントのみを処理するように制限する場合があります)