Java by API/javax.swing/JColorChooser
Содержание
- 1 JColorChooser: addChooserPanel(AbstractColorChooserPanel p)
- 2 JColorChooser: createDialog(Component c, String t, boolean m, JColorChooser c, ActionListener ok, ActionListener cancel)
- 3 JColorChooser: getSelectionModel()
- 4 JColorChooser: setDragEnabled(boolean b)
- 5 JColorChooser: setPreviewPanel(JComponent preview)
- 6 JColorChooser: showDialog(Component component, String title, Color initialColor)
JColorChooser: addChooserPanel(AbstractColorChooserPanel p)
<source lang="java">
import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.Icon; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.colorchooser.AbstractColorChooserPanel; import javax.swing.colorchooser.ColorSelectionModel; public class MainClass {
public static void main(String[] a) { final JColorChooser colorChooser = new JColorChooser(); SystemColorChooserPanel newChooser = new SystemColorChooserPanel(); colorChooser.addChooserPanel(newChooser); ActionListener okActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println(colorChooser.getColor()); } }; ActionListener cancelActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println("Cancel"); } }; final JDialog dialog = JColorChooser.createDialog(null, "Change Button Background", true, colorChooser, okActionListener, cancelActionListener); dialog.setVisible(true); }
} class SystemColorChooserPanel extends AbstractColorChooserPanel implements ItemListener {
JComboBox comboBox; String labels[] = { "BLACK", "BLUE", "CYAN"}; Color colors[] = { Color.BLACK, Color.BLUE, Color.CYAN}; private void setColor(Color newColor) { int position = findColorPosition(newColor); comboBox.setSelectedIndex(position); } private int findColorLabel(Object label) { String stringLabel = label.toString(); int position = -1; for (int i = 0, n = labels.length; i < n; i++) { if (stringLabel.equals(labels[i])) { position = i; break; } } return position; } private int findColorPosition(Color color) { int position = colors.length - 1; int colorRGB = color.getRGB(); for (int i = 0, n = colors.length; i < n; i++) { if ((colors[i] != null) && (colorRGB == colors[i].getRGB())) { position = i; break; } } return position; } public void itemStateChanged(ItemEvent itemEvent) { int state = itemEvent.getStateChange(); if (state == ItemEvent.SELECTED) { int position = findColorLabel(itemEvent.getItem()); if ((position != -1) && (position != labels.length - 1)) { ColorSelectionModel selectionModel = getColorSelectionModel(); selectionModel.setSelectedColor(colors[position]); } } } public String getDisplayName() { return "SystemColor"; } public Icon getSmallDisplayIcon() { return new MyIcon(Color.BLUE); } public Icon getLargeDisplayIcon() { return new MyIcon(Color.GREEN); } protected void buildChooser() { comboBox = new JComboBox(labels); comboBox.addItemListener(this); add(comboBox); } public void updateChooser() { Color color = getColorFromModel(); setColor(color); }
} class MyIcon implements Icon {
Color myColor; public MyIcon(Color myColor) { this.myColor = myColor; } public int getIconWidth() { return 16; } public int getIconHeight() { return 16; } public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(myColor); g.drawRect(0, 0, 16, 16); }
}
</source>
JColorChooser: createDialog(Component c, String t, boolean m, JColorChooser c, ActionListener ok, ActionListener cancel)
<source lang="java">
import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JLabel; public class MainClass {
public static void main(String[] a) { final JColorChooser colorChooser = new JColorChooser(); final JLabel previewLabel = new JLabel("I Love Swing", JLabel.CENTER); previewLabel.setFont(new Font("Serif", Font.BOLD | Font.ITALIC, 48)); previewLabel.setSize(previewLabel.getPreferredSize()); previewLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 1, 0)); colorChooser.setPreviewPanel(previewLabel); ActionListener okActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println("OK Button"); System.out.println(colorChooser.getColor()); } }; ActionListener cancelActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println("Cancel Button"); } }; final JDialog dialog = JColorChooser.createDialog(null, "Change Button Background", true, colorChooser, okActionListener, cancelActionListener); dialog.setVisible(true); }
}
</source>
JColorChooser: getSelectionModel()
<source lang="java">
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.JColorChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.colorchooser.ColorSelectionModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class MainClass {
public static void main(String[] a) { JFrame frame = new JFrame("JColorChooser Popup"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel("www.jexp.ru", JLabel.CENTER); label.setFont(new Font("Serif", Font.BOLD | Font.ITALIC, 48)); frame.add(label, BorderLayout.SOUTH); final JColorChooser colorChooser = new JColorChooser(label.getBackground()); colorChooser.setBorder(BorderFactory.createTitledBorder("Pick Color for jexp.ru")); ColorSelectionModel model = colorChooser.getSelectionModel(); ChangeListener changeListener = new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { Color newForegroundColor = colorChooser.getColor(); label.setForeground(newForegroundColor); } }; model.addChangeListener(changeListener); frame.add(colorChooser, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); }
}
</source>
JColorChooser: setDragEnabled(boolean b)
<source lang="java">
import java.awt.BorderLayout; import javax.swing.JColorChooser; import javax.swing.JFrame; public class MainClass {
public static void main(final String args[]) { JFrame frame = new JFrame("Double Color Choosers"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JColorChooser left = new JColorChooser(); left.setDragEnabled(true); frame.add(left, BorderLayout.WEST); JColorChooser right = new JColorChooser(); right.setDragEnabled(true); frame.add(right, BorderLayout.EAST); frame.pack(); frame.setVisible(true); }
}
</source>
JColorChooser: setPreviewPanel(JComponent preview)
<source lang="java">
import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JLabel; public class MainClass {
public static void main(String[] a) { final JColorChooser colorChooser = new JColorChooser(); final JLabel previewLabel = new JLabel("I Love Swing", JLabel.CENTER); previewLabel.setFont(new Font("Serif", Font.BOLD | Font.ITALIC, 48)); previewLabel.setSize(previewLabel.getPreferredSize()); previewLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 1, 0)); colorChooser.setPreviewPanel(previewLabel); ActionListener okActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println("OK Button"); System.out.println(colorChooser.getColor()); } }; ActionListener cancelActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println("Cancel Button"); } }; final JDialog dialog = JColorChooser.createDialog(null, "Change Button Background", true, colorChooser, okActionListener, cancelActionListener); dialog.setVisible(true); }
}
</source>
JColorChooser: showDialog(Component component, String title, Color initialColor)
<source lang="java">
import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JFrame; public class MainClass {
public static void main(String args[]) { JFrame f = new JFrame("JColorChooser Sample"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JButton button = new JButton("Pick to Change Background"); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { Color initialBackground = button.getBackground(); Color background = JColorChooser.showDialog(null, "JColorChooser Sample", initialBackground); if (background != null) { button.setBackground(background); } } }; button.addActionListener(actionListener); f.add(button, BorderLayout.CENTER); f.setSize(300, 200); f.setVisible(true); }
}
</source>