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;
}