Hallo liebe Java-Experten!
Ich stehe gerade, wie alle Fragenden hier, vor einem Problem. Und zwar möchte ich auf einem JFrame in einer JComboBox eine Farbe auswählen können. Ich hab mir das so vorgestellt, dass nicht in der ComboBox steht: rot, grün, blau, ... - sondern dass man die Farben als Farbbalken sieht und auswählen kann.
Mein Lösungsansatz war folgender:
Einfach zunächst mal eine JComboBox anlegen. Dann einen JPanel[] erstellen, in dem lauter einzelne JPanels mit der dazugehörigen Background-Farbe sind, und diesen dann als neues ComboBoxModel anfügen.
Geht das grundsätzlich überhaupt? Oder kann die JComboBox wirklich nur mit String[] umgehen? (irgendwie finde ich über Google nur solche Beispiele).
Danke!
PS: Mein Code hier (pps: JForm wurde mit Netbeans GUI-Builder erstellt, daher der teils ungeordnete Code.)
Ich stehe gerade, wie alle Fragenden hier, vor einem Problem. Und zwar möchte ich auf einem JFrame in einer JComboBox eine Farbe auswählen können. Ich hab mir das so vorgestellt, dass nicht in der ComboBox steht: rot, grün, blau, ... - sondern dass man die Farben als Farbbalken sieht und auswählen kann.
Mein Lösungsansatz war folgender:
Einfach zunächst mal eine JComboBox anlegen. Dann einen JPanel[] erstellen, in dem lauter einzelne JPanels mit der dazugehörigen Background-Farbe sind, und diesen dann als neues ComboBoxModel anfügen.
Geht das grundsätzlich überhaupt? Oder kann die JComboBox wirklich nur mit String[] umgehen? (irgendwie finde ich über Google nur solche Beispiele).
Danke!
PS: Mein Code hier (pps: JForm wurde mit Netbeans GUI-Builder erstellt, daher der teils ungeordnete Code.)
Code:
import java.awt.Color;
import java.util.Vector;
import javax.swing.JPanel;
/**
*
* @author Thomas
*/
public class SettingEntryTypes extends javax.swing.JFrame {
private Vector<Color> _colors = null;
private Session session;
/** Creates new form SettingEntryTypes */
public SettingEntryTypes(Session session) {
initComponents();
}
public void init() {
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(
colorPanels()));
}
private Vector<Color> colors() {
if(_colors==null) {
_colors = new Vector<Color>();
_colors.add(Color.red);
_colors.add(Color.blue);
_colors.add(Color.green);
_colors.add(Color.orange);
}
return _colors;
}
private JPanel[] colorPanels() {
JPanel[] panels = new JPanel[colors().size()];
for(int i = 0; i < colors().size(); i++) {
JPanel panel = new JPanel();
panel.setBackground(colors().get(i));
}
return panels;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jComboBox1 = new javax.swing.JComboBox();
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
getContentPane().add(jComboBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 90, 140, -1));
pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JComboBox jComboBox1;
// End of variables declaration
}