JColorChooserから指定したColorChooserPanelを削除して表示する
Total: 3574, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JColorChooserから指定したColorChooserPanelのタブなどを削除してJDialogに設定します。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
- すべてのチェックボックスが未選択の場合:
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(...)メソッドを使用するよう修正