Removing a Color Chooser Panel from a JColorChooser Dialog
Removing chooser panels is simply a matter of removeChooserPanel().
The issue is to identify the panels that are to be kept. There are
three chooser panels in the default JColorChooser
dialog. Although each is implemented by a class in the
javax.swing.colorchooser package, these classes are not public.
This example demonstrates how to identify these panels by class name.
JColorChooser chooser = new JColorChooser();
// Retrieve the current set of panels
AbstractColorChooserPanel[] oldPanels = chooser.getChooserPanels();
// Remove panels
for (int i=0; i<oldPanels.length; i++) {
String clsName = oldPanels[i].getClass().getName();
if (clsName.equals("javax.swing.colorchooser.DefaultSwatchChooserPanel")) {
// Remove swatch chooser if desired
chooser.removeChooserPanel(oldPanels[i]);
} else if (clsName.equals("javax.swing.colorchooser.DefaultRGBChooserPanel")) {
// Remove rgb chooser if desired
chooser.removeChooserPanel(oldPanels[i]);
} else if (clsName.equals("javax.swing.colorchooser.DefaultHSBChooserPanel")) {
// Remove hsb chooser if desired
chooser.removeChooserPanel(oldPanels[i]);
}
}
// This preview pane simply displays the currently selected color.
public class MyPreviewPane extends JComponent {
// The currently selected color
Color curColor;
public MyPreviewPane(JColorChooser chooser) {
// Initialize the currently selected color
curColor = chooser.getColor();
// Add listener on model to detect changes to selected color
ColorSelectionModel model = chooser.getSelectionModel();
model.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
ColorSelectionModel model = (ColorSelectionModel)evt.getSource();
// Get the new color value
curColor = model.getSelectedColor();
}
}) ;
// Set a preferred size
setPreferredSize(new Dimension(50, 50));
}
// Paint current color
public void paint(Graphics g) {
g.setColor(curColor);
g.fillRect(0, 0, getWidth()-1, getHeight()-1);
}
}
Post a comment