Denkblockade -> wie gehts nach dem ActionListener weiter

Status
Nicht offen für weitere Antworten.

the7

Mitglied
Hallo Leute, wieder einmal würde ich euch gern um Hilfe bitten.

Ich habe eine Klasse namens "Hauptprogramm.class"
in dieser instanziere ich eine "LoginFrame" vom Typ "Jframe" und lasse mir diese anzeigen (.setvisible(true)).
Die Maske erscheint, ich gebe die Daten ein. Als ActionListener ist die Klasse Loginlistener eingetragen. Ich lese die Werte aus und vergleiche sie, wenn alles gut gelaufen ist, möchte ich die LoginFrame schließen und eine andere Maske öffnen.Wie werfe ich jetzt also einen Wert bzw. irgendeine Info an das Hauptprogramm zurück?

Ich möchte nämlich nicht aus dem LoginListener ein neues Fenster öffnen.

Danke schonmal!
 

Chimaira

Mitglied
Du solltest ein bisschen Code vom LoginFrame und vom Listener posten. Dann kann dir auch geholfen werden.
 
Zuletzt bearbeitet:

the7

Mitglied
die LoginFrame ist uninteressant
aber gut, hier mal der Button

Code:
anmeldeButton = new JButton();
                this.add(anmeldeButton, new AnchorConstraint(592, 907, 640, 607, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
                anmeldeButton.setText("Anmelden");
                anmeldeButton.setPreferredSize(new java.awt.Dimension(105, 21));
                anmeldeButton.setFont(new java.awt.Font("Verdana",0,10));

                LoginHandler LoginListner = new LoginHandler(loginField, passwortField, modusSelector);
                anmeldeButton.addActionListener(LoginListner);

jetzt kommt der LoginListener:

Code:
public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        // TODO: FELDER prüfen!
        // TODO: auf Modi eingehen

        int intModus = inputModus.getSelectedIndex();

        try {
            if (this.checkLogin(this.inputUsername.getText(), this.inputPasswort.getText()) == true) {
          !!!!!!      System.out.println("Iwie musses jetzt weitergehen");  !!!!!!!!!!!
                
            } else {
            	
                System.out.println("Hier gehts aber def. nicht weiter");
            }
        } catch (NoSuchAlgorithmException lvException) {
            // TODO Auto-generated catch block
            lvException.printStackTrace();
        }

    }

Die LoginFrame wird durch die Klasse "Hauptprogramm" gestartet... wie komme ich jetzt quasi vom LoginListener wieder zurück zu Hauptprogramm, das die Frage!
 
G

Gast2

Gast
du schließt dein login-frame????
und in deiner hauptklasse öffnest dein richtiges frame!?!
 

gani

Mitglied
Hallo,

dieses Problem habe ich auch
Wie ist denn nun die Lösung!

Bei Programmstart muss der Benutzer sich erst einmal einloggen.
Dann soll das LoginFrame geschlossen werden und das Hauptfenster soll gestartet werden.
Wenn sich der Benutzer abmeldet soll das Hauptfenster erhalten bleiben.
Ein anderer Benutzer könnte sich dann anmelden und dann sollte der LoginFrame wieder erscheinen. usw.

Danke im Vorraus
 
S

SlaterB

Gast
drei Möglichkeiten:
1. das Login-Frame kennt das Hauptfenster (Referenz), ruft am Ende dort Methoden auf wie
'login mit folgenden Daten ..' und/ oder 'zeige nun xy an/ mache weiter'

2. das Hauptfenster blockiert, so lange der Login zu sehen ist, macht direkt dann weiter, wenn der Login verschwindet (Stichwort: modaler Dialog),
fragt dann Informationen und Erfolgszustand vom geschlossenen Login-Fenster, welches immer noch ein normales Objekt ist, ab

3. wie 2. nur nicht modal, dann muss das Hauptfenster in einem Thread alle 100ms prüfen, ob das Loginfenster geschlossen wurde usw.,
nicht zu empfehlen
 

Geeeee

Bekanntes Mitglied
Ich denke mal, dass er sich da gerade in LoginForm und LoginController verrannt hat und nicht mehr "aus der ActionPerformed" wegkommt.
Spontane und einfach gehaltene Lösung:
Erstell dir einen StartupController, der in der main instanziiert wird, der sollte dann den LoginController erstellen, LoginController.getLoginDialog() anzeigen, LoginController sagt in ActionPerformed entweder "Ende der Fahnenstange" oder gibt der ihm übergebenen StartupController-Referenz das Zeichen, die "richtige" Anwendung zu starten.

Edit: Oder eine von den o.g. Methoden :D
 
G

Gast2

Gast
Ich weiß nicht wie weit die Logik bei swingx da schon verwirklicht wurde vielleicht kannst das hauptframe ja schon mitgeben ;)
 

Geeeee

Bekanntes Mitglied
Es gibt afaik den LoginService für z.B. die DB-Anbindung und man kann die Results/Status abfragen. Aber außer dem Dialog einen owner zu geben wird keine Logik mitgebracht. Man könnte nun in der Programmlogik auch den Owner abschießen oder ähnliches, aber das ist ja nun wirklich nicht direkt von swingx abhängig.
Evtl. weiß irgendwer mehr darüber, aber ich hab den LoginDialog bis jetzt nie in Verbindung mit einem LoginService genutzt und greife daher nur auf die Basis-Funktionen zu (sieht halt hübsch aus :D )
 

gani

Mitglied
Hallo

hier sind meine Auschnitte aus dem Sourcecode:

public class Main {
private LoginModel m_model;

public static void main(String[] args) {
LoginMVC loginFrame = new LoginMVC();
boolean res = loginFrame.LoginMVC();
System.out.println("MAIN - Ergebnis Login: "+ res);
intro.showIntro(false);

/*
if (chkUserLogin == true) {
System.out.println("Starte das Hauptfenster.");
MainFrame mainFrame = new MainFrame();

// kennt getJFrame nicht
//loginFrame.getJFrame().setVisible(false);
}
*/

}
}

public interface LoginListener {
public void valueChanged(LoginModel model);
}

public class LoginMVC {
public void LoginMVC() {
LoginModel model = new LoginModel();
LoginView view = new LoginView(model);
LoginController controller = new LoginController(model, view);
}
}

public class LoginModel {
private ArrayList<LoginListener> listeners;

LoginModel () {
this.listeners = new ArrayList<LoginListener>();
}

boolean checkLogin(String loginName, String strPasswort) {
//...
ConnectDB myConnectDB = new ConnectDB();
myConnectDB.connect(loginName, strPasswort);
boolean chkLogin = myConnectDB.checkUserLogin(schema,loginName,strPasswort);
myConnectDB.disconnect();

return chkLogin;
}
}

public class LoginView extends JFrame {

private static boolean chkLoginValue = false;

public JFrame getJFrame() {
if (jFrame == null) {
//...
jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.out.println("LOGIN - windowClosing()");
jFrame.setVisible(false);
jFrame.dispose();
System.exit(0);
}
});
}
return jFrame;
}

private JPanel getJContentPane() {
//...
return jContentPane;
}

private JPanel getLoginPanel() {
//...
return loginPanel;
}

LoginView (LoginModel model) {
m_model = model;

this.getJFrame().setVisible(true);
this.getJContentPane();
this.getLoginPanel();
}

private JButton getBtn_Login() {
if (btn_Login == null) {
btn_Login = new JButton();
btn_Login.setText(getLanguageStr(htbl_Language, "7"));
btn_Login.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
/*
chkUserLogin = checkLogin();
System.out.println("LOGINVIEW - ERGEBNIS: "+chkUserLogin);

if (chkUserLogin == true) {
System.out.println("Starte das Hauptfenster.");
MainFrame mainFrame = new MainFrame();
//loginFrame.getJFrame().setVisible(false);
} else {
}
*/
}
});
}
return btn_Login;
}
}

public class LoginController {

private LoginModel m_model;
private LoginView m_view;

//===============================================================constructor
public LoginController (LoginModel model, LoginView view) {
m_model = model;
m_view = view;

// den Listener dem View hinzufuegen
view.addButtonLoginListener(new LoginListener());
}

//================================================ inner class LoginListener

class LoginListener implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent e) {
String userInput = "";
String passwortInput;

try {
userInput = m_view.getUserInputLogin();
passwortInput = new String(m_view.getPasswortInputLogin());

boolean loginRes = m_model.checkLogin(userInput, passwortInput);
if (loginRes == true) {
m_view.setLoginValue(true);

System.out.println("Starte das Hauptfenster.");
MainFrame mainFrame = new MainFrame();
//...
} else {
m_view.setLoginValue(false);
m_view.showError("FALSCHER LOGIN");
}
} catch (NumberFormatException nfex) {
}
}
}
}


Wie bekomme ich nun nach dem drücken des Buttons das Ergebnis des Logins in das Hauptprogramm ?
 

Geeeee

Bekanntes Mitglied
Entweder du übergibst deinem MainFrame einen Wert (find ich jetzt net so pralle) oder du erzeugst einen (wie schon erwähnt MainFrameController, den du an deinen LoginController übergibst. Und diesem kannst du dann in der actionPerformed sagen, wie wo was passiert ist.
Btw. die Klasse LoginMVC halte ich für überflüssig.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Applet mit Panels (so richtig, gehts besser?) AWT, Swing, JavaFX & SWT 3
A Gemeinsames Model für Baum- und Graphdarstellung-wie gehts? AWT, Swing, JavaFX & SWT 9
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
H JavaFX Fenstergröße nach maximieren erkennen AWT, Swing, JavaFX & SWT 6
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
T Elemente auf vorheriger Stage, nach Wechsel der Stage ansprechen AWT, Swing, JavaFX & SWT 32
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
VPChief Nach abspielen von Sound reagiert das Program nichtmehr AWT, Swing, JavaFX & SWT 9
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
S JavaFX Slider freezt nach Benutzung AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
S Ausgabe aktualisiert sich nur nach 2. Klick AWT, Swing, JavaFX & SWT 17
F JavaFX Zustand der CheckMenuItems behalten nach Programmneustart AWT, Swing, JavaFX & SWT 7
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
stroggi Swing Suche nach Kurveneditor (UI-Element) AWT, Swing, JavaFX & SWT 1
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
MiMa Java, Maven Projekte nach JavaFX? AWT, Swing, JavaFX & SWT 3
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
MiMa Java Projekt nach JavaFX convertieren AWT, Swing, JavaFX & SWT 4
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
F AWT Robot Klasse Screenshot nach Pixelmustern in bestimmten Radius um Bildschirmmittelpunkt absuchen AWT, Swing, JavaFX & SWT 13
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
D iText PDF wird nach Neustart nicht importiert AWT, Swing, JavaFX & SWT 0
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Linie wird nach Mausklick nicht am richtigen Ort gezeichnet AWT, Swing, JavaFX & SWT 11
C Memory Karten nach Paar offen bleiben sonst wieder umdrehen AWT, Swing, JavaFX & SWT 1
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
M JavaFX Methode nach initialize() aufrufen AWT, Swing, JavaFX & SWT 6
MrSnake Tabelle nach 2 Strings Filtern AWT, Swing, JavaFX & SWT 3
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
T Swing Tabelle mit Button - Anzeigefehler nach Zeile entfernen AWT, Swing, JavaFX & SWT 1
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
KilledByCheese Swing Seltsame Ausgabe nach ButtonClick AWT, Swing, JavaFX & SWT 1
thobren JavaFX textarea nach setPrefRowCount Ansicht aktualisieren AWT, Swing, JavaFX & SWT 1
L Graphik nach 100 ms neu laden AWT, Swing, JavaFX & SWT 1
B Doppelte MenuBar -> Nach Minimieren verschwunden AWT, Swing, JavaFX & SWT 3
W JComboBox auffristen nach Listenänderung AWT, Swing, JavaFX & SWT 20
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
J JTable filtern nach einer Spalte AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
P Anwendung kommt nach minimieren nicht mehr in den Vordergrund AWT, Swing, JavaFX & SWT 5
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
K Swing JPanel nach oben und links vergrößern AWT, Swing, JavaFX & SWT 3
Z Plot nach links verschieben!! AWT, Swing, JavaFX & SWT 1
J Swing: JFrame nach oben "aufklappen" AWT, Swing, JavaFX & SWT 0
X JFrame erst nach dem Laden sichtbar stellen AWT, Swing, JavaFX & SWT 8
G .jar startet nicht nach Exportierung AWT, Swing, JavaFX & SWT 7
P Swing JTable flimmert nach Zellsortierung AWT, Swing, JavaFX & SWT 3
S JComboBox nach auswahl erneuern AWT, Swing, JavaFX & SWT 4
Thallius Swing Tabelle nach Datumsspalte sortieren AWT, Swing, JavaFX & SWT 4
C JTextPane scrollt mit setText() immer nach oben AWT, Swing, JavaFX & SWT 2
D Swing Bestimmte Berechnung von Spalten durchführen und dann die Zeilen nach bestimmten Kriterien einfärben AWT, Swing, JavaFX & SWT 5
A JPanel wird nach Buttonklick nicht angezeigt AWT, Swing, JavaFX & SWT 2
P Swing JTable keine Markierung nach Button klick AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen


Oben