JColorChooserから指定したColorChooserPanelを削除して表示する
Total: 3153
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JColorChooser
から指定したColorChooserPanel
のタブなどを削除してJDialog
に設定します。
Screenshot
Advertisement
サンプルコード
JCheckBox swatches = new JCheckBox(UIManager.getString("ColorChooser.swatchesNameText", getLocale()));
JCheckBox hsv = new JCheckBox(UIManager.getString("ColorChooser.hsvNameText", getLocale()));
JCheckBox hsl = new JCheckBox(UIManager.getString("ColorChooser.hslNameText", getLocale()));
JCheckBox rgb = new JCheckBox(UIManager.getString("ColorChooser.rgbNameText", getLocale()));
JCheckBox cmyk = new JCheckBox(UIManager.getString("ColorChooser.cmykNameText", getLocale()));
List<JCheckBox> list = Arrays.asList(swatches, hsv, hsl, rgb, cmyk);
JButton button = new JButton("open JColorChooser");
button.addActionListener(e -> {
List<String> selected = list.stream()
.filter(AbstractButton::isSelected).map(AbstractButton::getText).collect(Collectors.toList());
if (selected.isEmpty()) { // use default JColorChooser
JColorChooser.showDialog(getRootPane(), "JColorChooser", null);
} else {
JColorChooser cc = new JColorChooser();
for (AbstractColorChooserPanel p : cc.getChooserPanels()) {
if (!selected.contains(p.getDisplayName())) {
cc.removeChooserPanel(p);
}
}
dialog.getContentPane().removeAll();
dialog.getContentPane().add(cc);
dialog.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
dialog.pack();
dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(getRootPane()));
dialog.setVisible(true);
}
});
View in GitHub: Java, Kotlin解説
- すべてのチェックボックスが未選択の場合:
JColorChooser.showDialog(...)
でデフォルトのカラー・チューザを表示static
なメソッドなので、JColorChooser#removeChooserPanel(...)
などでColorChooserPanel
を削除しても反映されない
- サンプル
(S)
:swatches
- パレット(
swatches
)から色を選択可能
- パレット(
HSV(H)
:hsv
- 色相-彩度-値のカラーモデルを使用して色を選択可能
JDK 1.7.0
以前は「色相-彩度-明るさ」でHSB
と表示されていた
HSL(L)
:hsl
- 「色相-彩度-明度」のカラーモデルを使用して色を選択可能
JDK 1.7.0
での新機能
RGB(G)
:rgb
- 「赤-緑-青」のカラーモデルを使用して色を選択可能
R
はリセットボタンのMnemonic
で使用されているので、RGB
タブのMnemonic
はG
になっている
CMYK
- プロセスカラー、または
4
色モデル(シアン-マゼンタ-黄-黒)を使用して色を選択可能 JDK 1.7.0
での新機能
- プロセスカラー、または
JColorChooser
のタブなどに表示されるAbstractColorChooserPanel#getDisplayName()
の値はLocale
に依存する上記のサンプルの「すべて未選択」以外で表示されるJDialog
のOK
ボタンなどはクリックしても無効JColorChooser.createDialog(...)
メソッドを使用するよう修正