Moin, hätte da mal ein Problem:
Und zwar hab ich ein JDialog Fenster welches zur Anmeldung und Registrierung dienen soll. Vom Code her sieht das ganze aktuell so aus:
Nun soll sich beim Klick auf den Button Registrieren am besten ein neues Panel(??) laden, welches im Prinzip genauso aussehen soll wie das Startfenster nur mit zwei Passwortfeldern (Passwort wiederholen) und lediglich einen Registrieren Button.
Bei meinen Recherechen dieses Problem zu lösen bin ich immer wieder auf das CardLayout gestoßen.
Leider hab ich aktuelll keine Ahnung wie ich es benutzen soll. Würde gerne möglichst viel über den WindowBuilder anlegen.
Mein erster Ansatz war nun der ContentPane das CardLayout zu geben und mir dann in der contentPane zwei Panels Anmelden und Registrieren zu erstellen (jeweils mit AbsolutLayout).
War leider nichts, der Code sieht dann ungefähr so aus (mal 'n vereinfachtes Beispiel):
Mir ist bewusst dass, das Problem darin liegt, dass sich die Panels nicht kennen. Meine frage ist nun: Ist der ganze Ansatz S*****e? (Dann bitte um Vorschlag eines besseren). Verwend ich das CardLayout Falsch?? Oder könnt ich das Problem durch ein bisschen "per Hand Code" lösen? (zB die Panels und das CardLayout außerhalb des Konstruktors anlegen (hab ich zum teil schon probiert und hat leider nicht geklapppt hat).
Schonmal 'n fetten Dank an jeden der sich mienen Problem annimmt.
MfG D-AMP
Und zwar hab ich ein JDialog Fenster welches zur Anmeldung und Registrierung dienen soll. Vom Code her sieht das ganze aktuell so aus:
Java:
import java.awt.BorderLayout;
public class Anmeldung extends JDialog {
private JLabel lblAnmeldung;
private JLabel lblBenutzername;
private JTextField textField;
private JLabel lblPasswort;
private JPasswordField passwordField;
private JButton btnAnmelden;
private JButton btnRegistrieren;
private static Anmeldung anmeldung;
/*Methode zum Verbinden des Anmeldungsfenster mit den GUIClient*/
protected static Anmeldung get() {
if (anmeldung == null)
anmeldung = new Anmeldung();
return anmeldung;
}
/**
* Create the dialog.
*/
public Anmeldung() {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setResizable(false);
setBounds(100, 100, 450, 300);
setModal(true);
getContentPane().setLayout(null);
getContentPane().add(getLblAnmeldung());
getContentPane().add(getLblBenutzername());
getContentPane().add(getTextField());
getContentPane().add(getLblPasswort());
getContentPane().add(getPasswordField());
getContentPane().add(getBtnAnmelden());
getContentPane().add(getBtnRegistrieren());
}
private JLabel getLblAnmeldung() {
if (lblAnmeldung == null) {
lblAnmeldung = new JLabel("Anmeldung");
lblAnmeldung.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblAnmeldung.setHorizontalAlignment(SwingConstants.CENTER);
lblAnmeldung.setBounds(0, 26, 434, 49);
}
return lblAnmeldung;
}
private JLabel getLblBenutzername() {
if (lblBenutzername == null) {
lblBenutzername = new JLabel("Benutzername:");
lblBenutzername.setBounds(36, 100, 99, 14);
}
return lblBenutzername;
}
private JTextField getTextField() {
if (textField == null) {
textField = new JTextField();
textField.setBounds(145, 97, 145, 20);
textField.setColumns(10);
}
return textField;
}
private JLabel getLblPasswort() {
if (lblPasswort == null) {
lblPasswort = new JLabel("Passwort:");
lblPasswort.setBounds(36, 131, 99, 14);
}
return lblPasswort;
}
private JPasswordField getPasswordField() {
if (passwordField == null) {
passwordField = new JPasswordField();
passwordField.setBounds(145, 128, 145, 20);
}
return passwordField;
}
private JButton getBtnAnmelden() {
if (btnAnmelden == null) {
btnAnmelden = new JButton("Anmelden");
btnAnmelden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
anmeldung.setVisible(false);
}
});
btnAnmelden.setBounds(83, 169, 99, 23);
}
return btnAnmelden;
}
private JButton getBtnRegistrieren() {
if (btnRegistrieren == null) {
btnRegistrieren = new JButton("Registrieren");
btnRegistrieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnRegistrieren.setBounds(228, 169, 107, 23);
}
return btnRegistrieren;
}
}
Bei meinen Recherechen dieses Problem zu lösen bin ich immer wieder auf das CardLayout gestoßen.
Leider hab ich aktuelll keine Ahnung wie ich es benutzen soll. Würde gerne möglichst viel über den WindowBuilder anlegen.
Mein erster Ansatz war nun der ContentPane das CardLayout zu geben und mir dann in der contentPane zwei Panels Anmelden und Registrieren zu erstellen (jeweils mit AbsolutLayout).
War leider nichts, der Code sieht dann ungefähr so aus (mal 'n vereinfachtes Beispiel):
Java:
public Test() {
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new CardLayout(0, 0));
{
JPanel an = new JPanel();
getContentPane().add(an, "name_9953374976740");
an.setLayout(null);
{
JButton btnNewButton = new JButton("Anmelden");
btnNewButton.setBounds(53, 97, 89, 23);
an.add(btnNewButton);
}
}
{
JPanel reg = new JPanel();
getContentPane().add(reg, "name_9962018113059");
reg.setLayout(null);
{
JButton btnNewButton_1 = new JButton("Registrieren");
btnNewButton_1.setBounds(180, 116, 125, 23);
reg.add(btnNewButton_1);
}
}
}
Schonmal 'n fetten Dank an jeden der sich mienen Problem annimmt.
MfG D-AMP