package ColorChooserTest; import java.awt.Color; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * Panel cu butoane pentru alege 3 tipuri de componente * @author Dan * */ public class ColorChooserPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; public ColorChooserPanel() { JButton modalButton = new JButton("Modal"); modalButton.addActionListener(new ModalListner()); add(modalButton); JButton modelessButton = new JButton("ModeLess"); modelessButton.addActionListener(new ModelessListner()); add(modelessButton); JButton immediateButton = new JButton("Immediate"); immediateButton.addActionListener(new ImmediateListner()); add(immediateButton); } /** * Acest Listner afiseaza fereastra modala de culori */ private class ModalListner implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Color defaultColor = getBackground(); Color selected = JColorChooser.showDialog(ColorChooserPanel.this, "set Background", defaultColor); if(selected!= null) setBackground(selected); } } /** * Acest Listner afiseaza fereastra nemodala pentru alegerea culorii. Culoarea se schimba dupa click pe OK */ private class ModelessListner implements ActionListener { public ModelessListner() { chooser = new JColorChooser(); dialog = JColorChooser.createDialog( ColorChooserPanel.this, "BackGround Color", false, chooser, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub setBackground(chooser.getColor()); } }, null); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub chooser.setColor(getBackground()); dialog.setVisible(true); } private JColorChooser chooser; private JDialog dialog; } /** * Acest Listner afiseaza fereastra ne modala cu culori.Background se schimb imediat dupa alegere Culorii */ private class ImmediateListner implements ActionListener { public ImmediateListner() { chooser = new JColorChooser(); chooser.getSelectionModel().addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { // TODO Auto-generated method stub setBackground(chooser.getColor()); } }); dialog = new JDialog( (Frame) null, false); dialog.add(chooser); dialog.pack(); } @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub chooser.setColor(getBackground()); dialog.setVisible(true); } JColorChooser chooser; JDialog dialog; } }