Swing/SpinnerTextColor のバックアップ差分(No.6)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/SpinnerTextColor へ行く。
- 1 (2013-04-29 (月) 08:31:48)
- 2 (2015-10-13 (火) 20:06:28)
- 3 (2017-04-12 (水) 18:56:21)
- 4 (2018-03-28 (水) 18:18:34)
- 5 (2018-04-02 (月) 18:32:17)
- 6 (2018-04-04 (水) 21:33:15)
- 7 (2018-04-09 (月) 14:54:35)
- 8 (2018-04-19 (木) 13:49:19)
- 9 (2018-04-20 (金) 17:21:35)
- 10 (2020-04-12 (日) 01:37:28)
- 11 (2021-10-19 (火) 13:00:03)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: SpinnerTextColor title: JComboBoxをJSpinnerの代わりに使用する tags: [JSpinner, JComboBox, ListCellRenderer, Html, ActionMap] author: aterai pubdate: 2013-04-29T08:31:48+09:00 description: JSpinnerの代わりにJComboBoxを使用することで、アイテムの文字色などを変更しています。 image: https://lh6.googleusercontent.com/-kpruQCgOnLE/UX2r6exfrII/AAAAAAAABqo/JZnFlTBy1zw/s800/SpinnerTextColor.png --- * 概要 [#summary] `JSpinner`の代わりに`JComboBox`を使用することで、アイテムの文字色などを変更しています。 #download(https://lh6.googleusercontent.com/-kpruQCgOnLE/UX2r6exfrII/AAAAAAAABqo/JZnFlTBy1zw/s800/SpinnerTextColor.png) * サンプルコード [#sourcecode] #code(link){{ JButton nb = createArrowButton(SwingConstants.NORTH); nb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { e.setSource(comboBox); comboBox.getActionMap().get("selectPrevious2").actionPerformed(e); } }); JButton sb = createArrowButton(SwingConstants.SOUTH); sb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { e.setSource(comboBox); comboBox.getActionMap().get("selectNext2").actionPerformed(e); } }); Box box = Box.createVerticalBox(); box.add(nb); box.add(sb); JPanel p = new JPanel(new BorderLayout()) { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); return new Dimension(d.width, 20); } }; p.add(comboBox); p.add(box, BorderLayout.EAST); }} * 解説 [#explanation] 上記のサンプルでは、ドロップダウンリストの表示を無効にした`JComboBox`と`2`つの`ArrowButton`を組み合わせて、`JSpinner`風のコンポーネントを作成しています。各アイテムの文字色は、`Html`の`<font>`タグを使って変更しています。 上記のサンプルでは、ドロップダウンリストの表示を無効にした`JComboBox`と`2`つの`ArrowButton`を組み合わせて、`JSpinner`風のコンポーネントを作成しています。`JComboBox`のセルレンダラーは`Html`タグが使用可能なので、各アイテムの文字色を`<font>`タグを使って変更しています。 - `BasicComboBoxUI#createArrowButton()`メソッドをオーバーライドして、`JComboBox`の`ArrowButton`を非表示に設定 -- [[JComboBoxのArrowButtonを隠す>Swing/HideComboArrowButton]] - `BasicComboBoxUI#setPopupVisible(...)`、`BasicComboBoxUI#createPopup()`、`BasicComboPopup#show()`メソッドなどをオーバーライドしてドロップダウンリストを無効化 - `JComboBox#getActionMap()#get("selectNext2")`などで取得したアクションを実行する`ArrowButton`を作成してレイアウト -- [[JTableを別コンポーネントから操作>Swing/SelectAllButton]] -- [[JComponentのKeyBinding一覧を取得する>Swing/KeyBinding]] - ボタンをクリックしたままの場合、値変更が繰り返し実行されるリピート機能には未対応 -- [[JButtonがマウスで押されている間、アクションを繰り返すTimerを設定する>Swing/AutoRepeatTimer]] * 参考リンク [#reference] - [[JComboBoxのArrowButtonを隠す>Swing/HideComboArrowButton]] - [[JTableを別コンポーネントから操作>Swing/SelectAllButton]] - [[JComponentのKeyBinding一覧を取得する>Swing/KeyBinding]] - [[JButtonがマウスで押されている間、アクションを繰り返すTimerを設定する>Swing/AutoRepeatTimer]] * コメント [#comment] #comment #comment