Swing/SortingAnimations のバックアップの現在との差分(No.10)
- category: swing folder: SortingAnimations title: JComboBoxのモデルとしてenumを使用する tags: [JComboBox, Enum, Animation, SwingWorker] author: aterai pubdate: 2007-07-09T14:59:22+09:00 description: JComboBoxのモデルとしてenumを使用します。 image:
概要
概要
JComboBox
のモデルとしてenum
を使用します。
Screenshot
Advertisement
サンプルコード
サンプルコード
private static enum SortAlgorithms {
Isort ("Insertion Sort"),
Selsort ("Selection Sort"),
Isort("Insertion Sort"),
Selsort("Selection Sort"),
Shellsort("Shell Sort"),
Hsort ("Heap Sort"),
Qsort ("Quicksort"),
Qsort2 ("2-way Quicksort");
Hsort("Heap Sort"),
Qsort("Quicksort"),
Qsort2("2-way Quicksort");
private final String description;
private SortAlgorithms(String description) {
this.description = description;
}
#spanadd
#spanend
@Override public String toString() {
return description;
}
}
#spandel
private final JComboBox algorithmsChoices = new JComboBox(SortAlgorithms.values());
#spanend
#spandel
//JDK 1.7.0
#spanend
#spandel
//private final JComboBox<Enum> algorithmsChoices = new JComboBox<Enum>(SortAlgorithms.values());
#spanend
#spandel
//private final JComboBox<? extends Enum> algorithmsChoices = new JComboBox<>(SortAlgorithms.values());
#spanend
#spandel
//private final JComboBox<SortAlgorithms> algorithmsChoices = new JComboBox<>(SortAlgorithms.values());
#spanend
#spanadd
JComboBox<SortAlgorithms> algorithmsChoices =
#spanend
new JComboBox<>(SortAlgorithms.values());
View in GitHub: Java, Kotlin解説
解説
enum
型でJComboBox
のモデルを作成しています。上記のコードでは、Enum#toString()
メソッドをオーバーライドして、JComboBox
の表示はユーザーに分かりやすい名前になるようにしています。
コード中で、どのアイテムが選択されているかなどを調べる場合などは、例えば以下のようにして使用します。
#spandel
switch((SortAlgorithms)algorithmsChoices.getSelectedItem()) {
#spanend
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;
#spanadd
switch ((SortAlgorithms) algorithmsChoices.getSelectedItem()) {
#spanend
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
に移植しています。
- ソートアニメーション自体は
Sorting Algorithm Animations from Programming Pearlsのアプレットから基本部分をコピーしてSwing
に移植-
SwingWorker
(JDK 6
以上)を使用したキャンセル機能を追加 - 全画面の書き換えを止めて移動する円図形の領域のみウェイトを入れて再描画するように変更
-
-
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を作成する
参考リンク
- Sorting Algorithm Animations from Programming Pearls
- Lesson: Performing Custom Painting (The Java™ Tutorials > Creating a GUI With JFC/Swing)