H
Henning Rüther
Gast
Hallo,
ich bin gerade mal wieder etwas irritiert bezüglich der Anzeige von GUI-Komponenten.
Ich habe eine void showProducts() und möchte in dieser JComboBoxes in jPanelEast einfügen. showProducts() rufe ich dann aus der void main() einer anderen Klasse (Klasse.showProducts()) auf, nachdem ich zunächst die GUI mit Klasse.show() starte.
Das funktioniert auch im Prinzip, jedoch ist die ComboBox zunächst nicht zu sehen, sondern erst nachdem ich einmal dorthin geklickt habe, wo ich sie vermute. Dann sieht sie jedoch sehr merkwürdig aus (Die Schaltfläche rechts fehlt, es ist im Prinzip ein einfarbiges Rechteck). Wenn ich nach dem Aufruf Klasse.showProducts() noch ein Klasse.repaint() setze, dann ist die ComboBox von Beginn an zu sehen, aber halt so "verunstaltet".
Wenn ich Folgendes mache wird zwar die ComboBox korrekt angezeigt, aber ich möchte sie doch gern flexibel erstellen, da die Anzahl nicht vorher feststeht...
Was mache ich verkehrt, bzw. warum sieht die ComboBox so merkwürdig aus. Wie kann ich das ändern?
Gruß Henning
ich bin gerade mal wieder etwas irritiert bezüglich der Anzeige von GUI-Komponenten.
Code:
public class FrontEnd extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JComboBox[] jComboBox = new JComboBox[10];
private JPanel jPanelSouth = null;
private JPanel jPanelNorth = null;
private JPanel jPanelEast = null;
private JPanel jPanelWest = null;
private JComboBox jComboBox1 = null;
/**
* This is the default constructor
*/
public FrontEnd() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(new java.awt.Rectangle(0,0,800,600));
this.setContentPane(getJContentPane());
this.setTitle("Application");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setBackground(java.awt.Color.white);
jContentPane.setLayout(new BorderLayout());
jContentPane.setPreferredSize(new java.awt.Dimension(600,400));
jContentPane.add(getJPanelSouth(), java.awt.BorderLayout.SOUTH);
jContentPane.add(getJPanelNorth(), java.awt.BorderLayout.NORTH);
jContentPane.add(getJPanelEast(), java.awt.BorderLayout.EAST);
jContentPane.add(getJPanelWest(), java.awt.BorderLayout.WEST);
}
return jContentPane;
}
public void showProducts(){
jComboBox[1] = new JComboBox();
jComboBox[1].setBounds(new java.awt.Rectangle(15,15+40,500,20));
jComboBox[1].setBackground(java.awt.SystemColor.white);
jComboBox[1].addItem("Produkte");
jPanelEast.add(jComboBox[1], java.awt.BorderLayout.NORTH);
}
/**
* This method initializes jPanelEast
*
* @return javax.swing.JPanel
*/
private JPanel getJPanelEast() {
if (jPanelEast == null) {
jPanelEast = new JPanel();
jPanelEast.setPreferredSize(new java.awt.Dimension(650,10));
jPanelEast.setBackground(new java.awt.Color(229,250,247));
jPanelEast.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.SoftBevelBorder.LOWERED));
}
return jPanelEast;
}
}
Ich habe eine void showProducts() und möchte in dieser JComboBoxes in jPanelEast einfügen. showProducts() rufe ich dann aus der void main() einer anderen Klasse (Klasse.showProducts()) auf, nachdem ich zunächst die GUI mit Klasse.show() starte.
Das funktioniert auch im Prinzip, jedoch ist die ComboBox zunächst nicht zu sehen, sondern erst nachdem ich einmal dorthin geklickt habe, wo ich sie vermute. Dann sieht sie jedoch sehr merkwürdig aus (Die Schaltfläche rechts fehlt, es ist im Prinzip ein einfarbiges Rechteck). Wenn ich nach dem Aufruf Klasse.showProducts() noch ein Klasse.repaint() setze, dann ist die ComboBox von Beginn an zu sehen, aber halt so "verunstaltet".
Wenn ich Folgendes mache wird zwar die ComboBox korrekt angezeigt, aber ich möchte sie doch gern flexibel erstellen, da die Anzahl nicht vorher feststeht...
Code:
private JPanel getJPanelEast() {
if (jPanelEast == null) {
jPanelEast = new JPanel();
jPanelEast.setPreferredSize(new java.awt.Dimension(650,10));
jPanelEast.setBackground(new java.awt.Color(229,250,247));
jPanelEast.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.SoftBevelBorder.LOWERED));
jComboBox[1] = new JComboBox();
jComboBox[1].setBounds(new java.awt.Rectangle(15,15+40,500,20));
jComboBox[1].setBackground(java.awt.SystemColor.white);
jComboBox[1].addItem("Produkte");
jPanelEast.add(jComboBox[1], java.awt.BorderLayout.NORTH);
}
return jPanelEast;
}
Was mache ich verkehrt, bzw. warum sieht die ComboBox so merkwürdig aus. Wie kann ich das ändern?
Gruß Henning