Originariamente inviato da alf83
ma come faccio a sapere quali sono tutti i componenti che formano il JColorChooser?
Ne avevo già parlato in un'altra discussione dicendo semplicemente che il JColorChooser è un componente complesso.
Con questo codice si può vedere molto bene la struttura della dialog del JColorChooser (e in generale di un qualunque "Container"):
codice:
import java.awt.*;
import javax.swing.*;
public class JColorChooserStructure
{
public static void dumpGuiStructure (Container c, int level)
{
for (int i = 0; i < level; i++)
System.out.print (" ");
System.out.print (c.getClass ().getName ());
if (c instanceof JLabel)
System.out.print (" text=\"" + ((JLabel) c).getText() + "\"");
else if (c instanceof AbstractButton)
System.out.print (" text=\"" + ((AbstractButton) c).getText() + "\"");
System.out.println ();
Component[] components = c.getComponents ();
for (int i = 0; i < components.length; i++)
{
if (components[i] instanceof Container)
dumpGuiStructure ((Container) components[i], level+1);
}
}
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
JDialog dialog = JColorChooser.createDialog (null, "titolo",
true, new JColorChooser(), null, null);
dumpGuiStructure (dialog, 0);
dialog.dispose ();
}
});
}
}
E se volete "deliziarvi" con la struttura della dialog di un JColorChooser, eccola!
codice:
javax.swing.ColorChooserDialog
javax.swing.JRootPane
javax.swing.JPanel
javax.swing.JLayeredPane
javax.swing.JPanel
javax.swing.JColorChooser
javax.swing.JTabbedPane
javax.swing.JPanel
javax.swing.colorchooser.DefaultSwatchChooserPanel
javax.swing.JPanel
javax.swing.JPanel
javax.swing.colorchooser.MainSwatchPanel
javax.swing.JLabel text="Recenti:"
javax.swing.JPanel
javax.swing.colorchooser.RecentSwatchPanel
javax.swing.JPanel
javax.swing.colorchooser.DefaultHSBChooserPanel
javax.swing.JPanel
javax.swing.colorchooser.DefaultHSBChooserPanel$3 text=""
javax.swing.JSlider
javax.swing.JLabel text=""
javax.swing.JPanel
javax.swing.JPanel
javax.swing.JRadioButton text="H"
javax.swing.JSpinner
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.JSpinner$NumberEditor
javax.swing.JFormattedTextField
javax.swing.JRadioButton text="S"
javax.swing.JSpinner
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.JSpinner$NumberEditor
javax.swing.JFormattedTextField
javax.swing.JRadioButton text="B"
javax.swing.JSpinner
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.JSpinner$NumberEditor
javax.swing.JFormattedTextField
javax.swing.JLabel text=" "
javax.swing.JPanel
javax.swing.JLabel text="R"
javax.swing.JTextField
javax.swing.JLabel text="G"
javax.swing.JTextField
javax.swing.JLabel text="B"
javax.swing.JTextField
javax.swing.JPanel
javax.swing.colorchooser.DefaultRGBChooserPanel
javax.swing.JPanel
javax.swing.JLabel text="Rosso"
javax.swing.JSlider
javax.swing.JPanel
javax.swing.JSpinner
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.JSpinner$NumberEditor
javax.swing.JFormattedTextField
javax.swing.JLabel text="Verde"
javax.swing.JSlider
javax.swing.JPanel
javax.swing.JSpinner
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.JSpinner$NumberEditor
javax.swing.JFormattedTextField
javax.swing.JLabel text="Blu"
javax.swing.JSlider
javax.swing.JPanel
javax.swing.JSpinner
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.plaf.basic.BasicArrowButton text=""
javax.swing.JSpinner$NumberEditor
javax.swing.JFormattedTextField
javax.swing.JPanel
javax.swing.colorchooser.DefaultPreviewPanel
javax.swing.JPanel
javax.swing.JButton text="OK"
javax.swing.JButton text="Annulla"
javax.swing.JButton text="Ripristina"
Semplice come struttura, no? 
Notate come il JColorChooser sia solamente una parte (quella in blu), che compone la dialog. Proprio perché JColorChooser infatti è semplicemente un componente, che si può mettere in un qualunque contenitore se non si vuole visualizzarlo nella "sua" dialog creata con createDialog() o showDialog().