Hallo Leute.
Habe ein merkwürdiges Problem mit einer JComboBox, hoffe mir kann jemand helfen.
Erstmal der Aufbau meines Formulars: ein JFrame, auf den ich ein JPanel draufpacke, daß jedoch je nach einer vorherigen Auswahl immer anders aussieht.
Hiermal der relevante Code:
Kurz zur Erklärung: die Klassen PVarianten-, Talente-, Vorteile-, Nachteile- und SonderfertigkeitenEditor sind alles Unterklassen der Klasse TabellenEditor.
Ich habe versucht, nur den relevanten Code zu posten: alle Variablen sind definiert, auch wenn der entsprechende Code hier vielleicht fehlt.
Jetzt mein Problem: beim Start des Programms läuft alles optimal, der erste Aufruf von initTEditor klappt also.
Wenn ich aber danach die ComboBox comTabelle benutze sollte ja eigentlich ein neuer tEditor erzeugt werden.
Das geschieht auch, jedoch sind die entsprechenden ComboBoxen nicht mehr zu sehen. Sie sind zwar noch da, wie ein Click auf die entsprechende Stelle beweist, aber die Umrandung (und der Dropdown-Pfeil) des Hauptfeldes fehlen.
Daher könnte es vielleicht sein, daß das Problem mit der Zeile
zusammenhängt? Alle anderen Komponenten werden jedoch richtig angezeigt.
Ich hätte noch ein Bild, daß mein Problem zeigt, kann es aber nirgendwo hochladen, aber schicke es gerne per Mail.
Hoffe mir kann jemand helfen. Vielleicht gibt es ja auch eine Möglichkeit, den remove-Befehl zu vermeiden?
Danke schon mal,
sg181
Habe ein merkwürdiges Problem mit einer JComboBox, hoffe mir kann jemand helfen.
Erstmal der Aufbau meines Formulars: ein JFrame, auf den ich ein JPanel draufpacke, daß jedoch je nach einer vorherigen Auswahl immer anders aussieht.
Hiermal der relevante Code:
Code:
public DBEditor extends JFrame
{
public DBEditor()
{
setExtendedState(MAXIMIZED_BOTH);
setResizable(false);
getContentPane().setLayout(null);
JComboBox comTabelle = new JComboBox(namen);
comTabelle.setBounds(105,5,150,20);
comTabelle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt)
{
if (!starting)
initTEditor(((JComboBox)evt.getSource()).getSelectedIndex()+1);
}
});
getContentPane().add(comTabelle);
initTEditor(6);
starting = false;
}
void initTEditor(int index)
{
if (!starting)
{
getContentPane().remove(tEditor);
repaint();
}
if (index == 1)
return;
else if (index == 2)
return;
else if (index == 3)
return;
else if (index == 4)
return;
else if (index == 5)
tEditor = new PVariantenEditor();
else if (index == 6)
tEditor = new TalenteEditor();
else if (index == 7)
tEditor = new VorteileEditor();
else if (index == 8)
tEditor = new NachteileEditor();
else if (index == 9)
tEditor = new SonderfertigkeitenEditor();
else
return;
getContentPane().add(tEditor);
repaint();
}
}
class TabellenEditor extends JPanel
{
String tName;
public TabellenEditor(String s)
{
this.tName = s;
cModelDatensatz = new DefaultComboBoxModel(daten);
comDatensatz = new JComboBox(cModelDatensatz);
comDatensatz.setBounds(90,5,200,20);
comDatensatz.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt)
{
actID = comDatensatz.getSelectedIndex();
if (actID == 0)
clearMask();
else
loadValues(actID);
}
});
add(comDatensatz);
}
}
Kurz zur Erklärung: die Klassen PVarianten-, Talente-, Vorteile-, Nachteile- und SonderfertigkeitenEditor sind alles Unterklassen der Klasse TabellenEditor.
Ich habe versucht, nur den relevanten Code zu posten: alle Variablen sind definiert, auch wenn der entsprechende Code hier vielleicht fehlt.
Jetzt mein Problem: beim Start des Programms läuft alles optimal, der erste Aufruf von initTEditor klappt also.
Wenn ich aber danach die ComboBox comTabelle benutze sollte ja eigentlich ein neuer tEditor erzeugt werden.
Das geschieht auch, jedoch sind die entsprechenden ComboBoxen nicht mehr zu sehen. Sie sind zwar noch da, wie ein Click auf die entsprechende Stelle beweist, aber die Umrandung (und der Dropdown-Pfeil) des Hauptfeldes fehlen.
Daher könnte es vielleicht sein, daß das Problem mit der Zeile
Code:
getContentPane().remove(tEditor);
zusammenhängt? Alle anderen Komponenten werden jedoch richtig angezeigt.
Ich hätte noch ein Bild, daß mein Problem zeigt, kann es aber nirgendwo hochladen, aber schicke es gerne per Mail.
Hoffe mir kann jemand helfen. Vielleicht gibt es ja auch eine Möglichkeit, den remove-Befehl zu vermeiden?
Danke schon mal,
sg181