Ahoi,
folgendes Problem:
Ich arbeite zurzeit mit NetBeans und habe den GUI Builder ausprobiert & mir ne GUI zusammengeklickt.
Jetzt möchte ich bei dem Klick auf nen Button, dass das Frame geschlossen wird. Jedoch befindet sich der ActionListener in einer eigenen Klasse & ich kann nicht einfach
machen. (erbt von JFrame - nicht meine Schuld, NetBeans war das..)
folgendes Problem:
Ich arbeite zurzeit mit NetBeans und habe den GUI Builder ausprobiert & mir ne GUI zusammengeklickt.
Jetzt möchte ich bei dem Klick auf nen Button, dass das Frame geschlossen wird. Jedoch befindet sich der ActionListener in einer eigenen Klasse & ich kann nicht einfach
Code:
this.dispose()
Java:
package gui;
import adressbook.Utility;
import adressbook.GUIController;
public class LoginWindow extends javax.swing.JFrame
{
private GUIController controller;
public LoginWindow()
{
initComponents();
controller = new GUIController(button_login, button_registration, tf_username, tf_password);
addListener(controller);
Utility.centerWindow(this);
}
private void addListener(GUIController controller)
{
button_login.addActionListener(controller);
button_registration.addActionListener(controller);
tf_username.addActionListener(controller);
tf_password.addActionListener(controller);
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
label_username = new javax.swing.JLabel();
label_password = new javax.swing.JLabel();
tf_username = new javax.swing.JTextField();
tf_password = new javax.swing.JPasswordField();
button_login = new javax.swing.JButton();
button_registration = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Login");
setResizable(false);
label_username.setText("Benutzername");
label_password.setText("Passwort");
button_login.setText("Login");
button_registration.setText("Registration");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label_username)
.addComponent(label_password))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tf_username)
.addComponent(tf_password)))
.addGroup(layout.createSequentialGroup()
.addComponent(button_login, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(button_registration, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(label_username)
.addComponent(tf_username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(label_password)
.addComponent(tf_password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(button_login)
.addComponent(button_registration))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JButton button_login;
private javax.swing.JButton button_registration;
private javax.swing.JLabel label_password;
private javax.swing.JLabel label_username;
private javax.swing.JPasswordField tf_password;
private javax.swing.JTextField tf_username;
// End of variables declaration
}
Java:
package adressbook;
import gui.LoginWindow;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class GUIController implements ActionListener
{
private JButton button1, button2;
private JTextField textfield;
private JPasswordField passwordfield;
private Database database = new Database();
//Konstruktor für "LoginWindow.java"
public GUIController(JButton button, JButton button2, JTextField textfield, JPasswordField passwordfield)
{
this.button1 = button;
this.button2 = button2;
this.textfield = textfield;
this.passwordfield = passwordfield;
}
//Konstruktor für "RegistrationWindow.java"
public GUIController()
{
}
@Override
public void actionPerformed(ActionEvent event)
{
String username = textfield.getText();
String password = passwordfield.getText();
switch (event.getActionCommand())
{
//-----LOGIN BUTTON-----
case "Login":
//Wenn beide Textfelder ausgefüllt sind
if (Utility.checkString(username) && Utility.checkString(password))
{
try
{
//Wenn das Anmelden erfolgreich war
if (database.login(username, password))
{
Utility.showMessage("Login war erfolgreich!", "Login", 1);
//Hier soll das JFrame von LoginWindow.java geschlossen werden & new RegistrationWindow().setVisible(true); aufegrufen werden
}
//Anmelden fehlgeschlagen
else
{
Utility.showMessage("Benutzername und/oder Passwort falsch!", "Fehlerhafte Eingabe", 0);
}
}
catch (Exception e)
{
System.err.printf("Fehler beim Login! %n%s", e.getMessage());
}
}
//Eins von beiden oder beide Textfelder sind leer/null.
else
{
Utility.showMessage("Bitte alle Felder ausfüllen!", "Fehlerhafte Eingabe", 2);
}
break;
//-----REGI BUTTON-----
case "Registration":
break;
}
}
}