JComboBoxのモデルとしてenumを使用する
Total: 12517
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JComboBox
のモデルとしてenum
を使用します。
Screenshot
Advertisement
サンプルコード
private static enum SortAlgorithms {
Isort("Insertion Sort"),
Selsort("Selection Sort"),
Shellsort("Shell Sort"),
Hsort("Heap Sort"),
Qsort("Quicksort"),
Qsort2("2-way Quicksort");
private final String description;
private SortAlgorithms(String description) {
this.description = description;
}
@Override public String toString() {
return description;
}
}
JComboBox<SortAlgorithms> algorithmsChoices =
new JComboBox<>(SortAlgorithms.values());
View in GitHub: Java, Kotlin解説
enum
型でJComboBox
のモデルを作成しています。上記のコードでは、Enum#toString()
メソッドをオーバーライドして、JComboBox
の表示はユーザーに分かりやすい名前になるようにしています。
コード中で、どのアイテムが選択されているかなどを調べる場合などは、例えば以下のようにして使用します。
switch ((SortAlgorithms) algorithmsChoices.getSelectedItem()) {
case Isort: isort(number); break;
case Selsort: ssort(number); break;
case Shellsort: shellsort(number); break;
case Hsort: heapsort(number); break;
case Qsort: qsort(0, number - 1); break;
case Qsort2: qsort2(0, number - 1); break;
}
- ソートアニメーション自体は
Sorting Algorithm Animations from Programming Pearlsのアプレットから基本部分をコピーしてSwing
に移植SwingWorker
(JDK 6
以上)を使用したキャンセル機能を追加- 全画面の書き換えを止めて移動する円図形の領域のみウェイトを入れて再描画するように変更
参考リンク
Sorting Algorithm Animations from Programming Pearls- Lesson: Performing Custom Painting (The Java™ Tutorials > Creating a GUI With JFC/Swing)
- Enum定数を選択するJRadioButtonのButtonGroupやJComboBoxを作成する