Theophilius
Grünschnabel
Hallo tutorials.de,
habe schon wieder ein neues Problem, welches mich direkt selbst wundert.
Ich habe eine Klasseninstanz eines JColorchoosers, mit 4 Buttons am unteren Ende
(Übernehmen, Vorschau, Abbrechen und Zurücksetzen).
Wähle ich eine normale Farbe aus den Mustern aus passt alles, wenn ich aber eine HSV Farbe nehme, und die Transparenz verändere, angenommen auf 50%, dann auf Vorschau oder OK klicke, dann ändert sich die Farbe nicht gleich.
Klicke ich aber hingegen zweimal auf den Vorschau Button, ändert sich auf einmal die Farbe.
Hier mal der Code, keine Ahnung wo da der Fehler ist.
habe schon wieder ein neues Problem, welches mich direkt selbst wundert.
Ich habe eine Klasseninstanz eines JColorchoosers, mit 4 Buttons am unteren Ende
(Übernehmen, Vorschau, Abbrechen und Zurücksetzen).
Wähle ich eine normale Farbe aus den Mustern aus passt alles, wenn ich aber eine HSV Farbe nehme, und die Transparenz verändere, angenommen auf 50%, dann auf Vorschau oder OK klicke, dann ändert sich die Farbe nicht gleich.
Klicke ich aber hingegen zweimal auf den Vorschau Button, ändert sich auf einmal die Farbe.
Hier mal der Code, keine Ahnung wo da der Fehler ist.
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.colorchooser.AbstractColorChooserPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class popup_colorchooser extends JColorChooser {
public JColorChooser cc;
JFrame holdingFrame;
Color color;
public popup_colorchooser(final Color InitialColor) {
super();
holdingFrame = new JFrame("Farbe auswählen");
holdingFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
cc = new JColorChooser();
cc.setColor(InitialColor);
JPanel colorPanel = new JPanel();
JPanel buttonPanel = new JPanel();
// CustomButtons haben nur ein anderes Icon, leiten JButtons ab
JButton confirmButton = new customButton("OK");
JButton viewButton = new customButton("Vorschau");
JButton cancelButton = new customButton("Abbrechen");
JButton resetButton = new customButton("Zurücksetzen");
confirmButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
if(cc.getColor()!= null){
// ändert den Hintergrund des Hauptframes und schliesst colorchooser
bilder_dias.setBackgroundColor(cc.getColor());
bilder_dias.image_label.repaint();
holdingFrame.setVisible(false);
}
}
});
viewButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0){
// ändert den Hintergrund des Hauptframes sofort
bilder_dias.setBackgroundColor(cc.getColor());
bilder_dias.image_label.repaint();
}
});
cancelButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// bricht ab und setzt auf ursprüngliche Farbe zurück
cc.setColor(InitialColor);
bilder_dias.setBackgroundColor(InitialColor);
bilder_dias.image_label.repaint();
holdingFrame.dispose();
}
});
resetButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// setzt auf ursprüngliche Farbe zurück
cc.setColor(InitialColor);
bilder_dias.setBackgroundColor(InitialColor);
bilder_dias.image_label.repaint();
}
});
// Zwei Panels im BoxLayout untereinander gesetzt
colorPanel.add(cc);
buttonPanel.add(confirmButton);
buttonPanel.add(viewButton);
buttonPanel.add(cancelButton);
buttonPanel.add(resetButton);
holdingFrame.setLayout(new BoxLayout(holdingFrame.getContentPane(), BoxLayout.Y_AXIS));
holdingFrame.add(colorPanel);
holdingFrame.add(buttonPanel);
holdingFrame.pack();
}
}