Hallo zusammen,
ich versuche seit geraumer Zeit mir einen Dialog zu basteln der sich jedes Mal sozusagen neu erstellt, sobald was anderes in der ComboBox ausgewählt wird. Das ganze klappt nur mit dem ersten Aufruf, sobald man ein anderes Element anwählt war es das. Ein repaint oder revalidate hilft hier gar nicht...wäre über jede Hilfe dankbar!
Mein stark vereinfachter Code sieht wie folgt aus:
Viele Grüße
Christian
ich versuche seit geraumer Zeit mir einen Dialog zu basteln der sich jedes Mal sozusagen neu erstellt, sobald was anderes in der ComboBox ausgewählt wird. Das ganze klappt nur mit dem ersten Aufruf, sobald man ein anderes Element anwählt war es das. Ein repaint oder revalidate hilft hier gar nicht...wäre über jede Hilfe dankbar!
Mein stark vereinfachter Code sieht wie folgt aus:
Java:
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class dialog extends JPanel {
/**
* Default serial ID.
*/
private static final long serialVersionUID = -5875101194560406069L;
private JComboBox<?> cb;
private Categories savedClass;
@SuppressWarnings({ "unchecked", "rawtypes" })
public dialog() {
super(new GridBagLayout());
String[] categoriesStringArray = { "Details", "Profile", "General Informations"};
JComboBox<?> categorieList = new JComboBox(categoriesStringArray);
categorieList.setSelectedIndex(0);
categorieList.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cb = (JComboBox<?>)e.getSource();
if (cb.getSelectedItem().equals("Details")) {
Details details = new Details();
settingClass(details);
} else if (cb.getSelectedItem().equals("Profile")) {
Profile profile = new Profile();
settingClass(profile);
} else if (cb.getSelectedItem().equals("General Informations")) {
General general = new General();
settingClass(general);
}
}
});
gettingClass().createBody();
}
private void settingClass(Categories savedClass) {
this.savedClass = savedClass;
}
private Categories gettingClass() {
return this.savedClass;
}
}
class Details extends JPanel implements Categories {
/**
* Default serial ID.
*/
private static final long serialVersionUID = -1442222132817621653L;
public void createBody() {
JLabel lblName = new JLabel("Name: ");
JTextField txtName = new JTextField();
add(lblName);
add(txtName);
}
}
class Profile extends JPanel implements Categories {
/**
* Default serial ID.
*/
private static final long serialVersionUID = 213929838488021614L;
public void createBody() {
JLabel lblAge = new JLabel("Age: ");
JTextField txtAge = new JTextField();
add(lblAge);
add(txtAge);
}
}
class General extends JPanel implements Categories {
/**
* Default serial ID.
*/
private static final long serialVersionUID = 213929838488021614L;
public void createBody() {
JLabel lblLocation = new JLabel("Location: ");
JTextField txtLocation = new JTextField();
add(lblLocation);
add(txtLocation);
}
}
interface Categories {
public void createBody();
}
Viele Grüße
Christian