JColorChooser: скрыть все панели по умолчанию и показать только панель HSB

Как я могу скрыть все панели по умолчанию на JColorChooser кроме HSB?

И можно ли показать только HSB без JTabbedPane, просто панель

Спасибо!

4 ответа

Решение
import javax.swing.*;
import javax.swing.colorchooser.*;

class ColorChooserTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JColorChooser cc = new JColorChooser();
                AbstractColorChooserPanel[] panels = cc.getChooserPanels();
                for (AbstractColorChooserPanel accp : panels) {
                    if (accp.getDisplayName().equals("HSB")) {
                        JOptionPane.showMessageDialog(null, accp);
                    }
                }
            }
        });
    }
}

Ты можешь попробовать: setChooserPanels метод JColorChooser, чтобы сделать это. Больше помощи здесь.

Это также можно сделать с помощью простого цикла:

AbstractColorChooserPanel[] panels = jColorChooser1.getChooserPanels();
for (AbstractColorChooserPanel accp : panels) {
   if(!accp.getDisplayName().equals("HSB")) {
      jColorChooser1.removeChooserPanel(accp);
   } 
}

Если вы хотите удалить панели, вы можете следовать этому подходу. Здесь я удаляю все другие панели, кроме образцов и RGB,

AbstractColorChooserPanel[] panels=colorChooser.getChooserPanels();
        for(AbstractColorChooserPanel p:panels){
            String displayName=p.getDisplayName();
            switch (displayName) {
                case "HSV":
                    colorChooser.removeChooserPanel(p);
                    break;
                case "HSL":
                    colorChooser.removeChooserPanel(p);
                    break;
                case "CMYK":
                    colorChooser.removeChooserPanel(p);
                    break;
            }
Другие вопросы по тегам