Hi,
ich habe mir einen kleinen ColorPicker geschrieben:
Da mir das aber zu Themaunabhängig war, habe ich das Ganze ein bisschen umgeschrieben und in einen Button umgewandelt:
Das Problem dabei: Bei dem MetalLookAndFeel wird keine Farbe angezeigt: Der Button bleibt leer. Beim SystemLookAndFeel (zumindest bei GTK+) funktioniert alles wunderbar. Jemand eine Idee, wie man das lösen könnte?
MfG
DeeDee0815
ich habe mir einen kleinen ColorPicker geschrieben:
Code:
package tools;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
public class ColorPicker extends JPanel {
private static final long serialVersionUID = 1L;
private Color newColor;
public ColorPicker(final JDialog owner, final String title, final Color initialColor) {
this.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.WHITE, Color.GRAY));
this.setBackground(initialColor);
this.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent event) {
newColor = JColorChooser.showDialog(owner, title, ColorPicker.this.getColor());
if (newColor != null) {
ColorPicker.this.setColor(newColor);
}
}
public void mouseEntered(MouseEvent event) {
}
public void mouseExited(MouseEvent event) {
}
public void mousePressed(MouseEvent event) {
}
public void mouseReleased(MouseEvent event) {
}
});
}
public void setColor(Color newColor) {
this.setBackground(newColor);
}
public Color getColor() {
return this.getBackground();
}
public Dimension getPreferredSize() {
return new Dimension(25, 25);
}
}
Da mir das aber zu Themaunabhängig war, habe ich das Ganze ein bisschen umgeschrieben und in einen Button umgewandelt:
Code:
package tools;
import java.awt.Color;
import java.awt.Dimension;
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;
public class ColorPicker extends JButton {
private static final long serialVersionUID = 1L;
private JPanel display;
private Color newColor;
public ColorPicker(final JDialog owner, final String title,
final Color initialColor) {
display = new JPanel();
display.setBackground(initialColor);
display.setMinimumSize(new Dimension(32, 32));
add(display);
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
newColor = JColorChooser.showDialog(owner, title,
ColorPicker.this.getColor());
if (newColor != null) {
ColorPicker.this.setColor(newColor);
}
}
});
}
public void setColor(Color newColor) {
display.setBackground(newColor);
}
public Color getColor() {
return display.getBackground();
}
public Dimension getPreferredSize() {
return display.getMinimumSize();
}
public Dimension getMinimumSize() {
return display.getMinimumSize();
}
}
Das Problem dabei: Bei dem MetalLookAndFeel wird keine Farbe angezeigt: Der Button bleibt leer. Beim SystemLookAndFeel (zumindest bei GTK+) funktioniert alles wunderbar. Jemand eine Idee, wie man das lösen könnte?
MfG
DeeDee0815