Was heißt denn gesteuert?
Ich kann jetzt nur raten, aber ich denke mal, dass du den Text ändern willst?
Dann musst du in deiner Klasse wo das JLabel definiert ist einen Setter (und Getter falls nötig / gebraucht wird) implementieren mit dem du den Text änderst / ausgibst.
Das kann bswp. so aussehen:
Was heißt denn gesteuert?
Ich kann jetzt nur raten, aber ich denke mal, dass du den Text ändern willst?
Dann musst du in deiner Klasse wo das JLabel definiert ist einen Setter (und Getter falls nötig / gebraucht wird) implementieren mit dem du den Text änderst / ausgibst.
Das kann bswp. so aussehen:
Hätte mich auch genauer ausdrücken können
Was ich meinte ist, dass du mal schauen sollst, ob deine Bedingung erfüllt ist und der den Code überhaupt ausführt.
Das kannst du bswp machen indem du einfach mal dort was ausgibst.
Java:
staticclass ActionCheckimplementsActionListener{
publicvoid actionPerformed(ActionEvent e){if(e.getSource()== btnLogin){String e1 = user.getText();String e2 = passwd.getText();if(e1.equalsIgnoreCase("Wood14Mine")){if(e2.equalsIgnoreCase("woodi")){System.out.println("Er geht in die if");GUI guimain;
guimain =newGUI();
guimain.setLabelText("Wood14Mine");}}}}
EDIT:
Wenn in deiner Console dann nicht "Er geht in die if" steht, dann weißt du wo der Fehler liegt. Dann solltest du dir als nächstes mal die Werte von e1 und e2 anschauen
Hätte mich auch genauer ausdrücken können
Was ich meinte ist, dass du mal schauen sollst, ob deine Bedingung erfüllt ist und der den Code überhaupt ausführt.
Das kannst du bswp machen indem du einfach mal dort was ausgibst.
Java:
staticclass ActionCheckimplementsActionListener{
publicvoid actionPerformed(ActionEvent e){if(e.getSource()== btnLogin){String e1 = user.getText();String e2 = passwd.getText();if(e1.equalsIgnoreCase("Wood14Mine")){if(e2.equalsIgnoreCase("woodi")){System.out.println("Er geht in die if");GUI guimain;
guimain =newGUI();
guimain.setLabelText("Wood14Mine");}}}}
EDIT:
Wenn in deiner Console dann nicht "Er geht in die if" steht, dann weißt du wo der Fehler liegt. Dann solltest du dir als nächstes mal die Werte von e1 und e2 anschauen
Okay.. ich denke ich habe die passende Lösung für dich.
(Hab jetzt erst gemerkt, dass du was vollkommen anderes erreichen wolltest als ich dachte)
Du willst also, dass das Label sichtbar wird sobald man sich richtig einloggt.
Das machst du am besten so:
Java:
classActionLoginimplementsActionListener{publicvoidactionPerformed(ActionEvent e){if(e.getSource()== btn1){JFrameGUILogin=newGUILogin(TextN);// <---- Du übergibst deinem Konstruktor von GUILogin als Param das JLabelGUILogin.setVisible(true);}}}
Du übergibst deinem Konstruktor von GUILogin als Parameter dein JLabel, was du sichtbar machen willst.
Daher musst du auch in deinem GUILogin Klasse den Konstruktor bearbeiten:
Java:
JLabelTextN;//<-- Globale variable in deiner GUILogin KlassepublicGUILogin(JLabelTextN){// <-- Neuer Konstruktorthis.TextN=TextN;..}
Damit kannst du jetzt in deiner GUILogin Klasse auf das JLabel aus der GUI Klasse zugreifen.
Jetzt musst du nur noch einer deiner ActionCheck Klasse die actionPerformed Methode anpassen:
Java:
classActionCheckimplementsActionListener{publicvoidactionPerformed(ActionEvent e){// ... if(e1.equalsIgnoreCase("Wood14Mine")){if(e2.equalsIgnoreCase("woodi")){// das funktioniert!TextN.setVisible(true);// <-- NEU}}}}}
Das sollte dein Problem jetzt beheben.
------
Bitte beachte folgendes:
Es gibt in Java gewisse Konventionen, die man einhalten sollte um es für andere und sich selbst leichter zu machen.
Dazu gehört:
- Variablennamen sinnvoll wählen (TextN --> labelUserName oder lblUserName o.ä.)
- Variablennamen im CammelCase (TextN --> textN)
- Vermeide innere Klassen zu machen. Du kannst sie auslagern.
- Ich würde dir raten nicht für jeden Action eine eigne Klasse zu machen. Pro GUI eine Klasse ActionListenerLogin und ActionListenerGUI reichen aus. Dort kannst du dann mittels if Abfragen schauen, welches Element deienr Klasse angesprochen wird.
- Vermeide static ausdrücke. Macht das Leben nur unnötig kompliziert (gerade wenn man sie eig gar nicht braucht)
- Man extended seine Klasse normaler weise nicht mit JFrame. Du willst die funktionalität von JFrame ja nicht erweitern sondern nur die Methoden betnutzen --> Instanze von JFrame benutzen
- Trenne dein Programm immer sauber nach MVC (Model, View, Controller) also immer GUI von Logik trennen.
Am besten versuchst du dein Programm gleich mal zu bearbeiten - lieber gleich richtig
Okay.. ich denke ich habe die passende Lösung für dich.
(Hab jetzt erst gemerkt, dass du was vollkommen anderes erreichen wolltest als ich dachte)
Du willst also, dass das Label sichtbar wird sobald man sich richtig einloggt.
Das machst du am besten so:
Java:
classActionLoginimplementsActionListener{publicvoidactionPerformed(ActionEvent e){if(e.getSource()== btn1){JFrameGUILogin=newGUILogin(TextN);// <---- Du übergibst deinem Konstruktor von GUILogin als Param das JLabelGUILogin.setVisible(true);}}}
Du übergibst deinem Konstruktor von GUILogin als Parameter dein JLabel, was du sichtbar machen willst.
Daher musst du auch in deinem GUILogin Klasse den Konstruktor bearbeiten:
Java:
JLabelTextN;//<-- Globale variable in deiner GUILogin KlassepublicTest(JLabelTextN){// <-- Neuer Konstruktorthis.TextN=TextN;..}
Damit kannst du jetzt in deiner GUILogin Klasse auf das JLabel aus der GUI Klasse zugreifen.
Jetzt musst du nur noch einer deiner ActionCheck Klasse die actionPerformed Methode anpassen:
Java:
classActionCheckimplementsActionListener{publicvoidactionPerformed(ActionEvent e){// ... if(e1.equalsIgnoreCase("Wood14Mine")){if(e2.equalsIgnoreCase("woodi")){// das funktioniert!TextN.setVisible(true);// <-- NEU}}}}}
Das sollte dein Problem jetzt beheben.
------
Bitte beachte folgendes:
Es gibt in Java gewisse Konventionen, die man einhalten sollte um es für andere und sich selbst leichter zu machen.
Dazu gehört:
- Variablennamen sinnvoll wählen (TextN --> labelUserName oder lblUserName o.ä.)
- Variablennamen im CammelCase (TextN --> textN)
- Vermeide innere Klassen zu machen. Du kannst sie auslagern.
- Ich würde dir raten nicht für jeden Action eine eigne Klasse zu machen. Pro GUI eine Klasse ActionListenerLogin und ActionListenerGUI reichen aus. Dort kannst du dann mittels if Abfragen schauen, welches Element deienr Klasse angesprochen wird.
- Vermeide static ausdrücke. Macht das Leben nur unnötig kompliziert (gerade wenn man sie eig gar nicht braucht)
- Man extended seine Klasse normaler weise nicht mit JFrame. Du willst die funktionalität von JFrame ja nicht erweitern sondern nur die Methoden betnutzen --> Instanze von JFrame benutzen
- Trenne dein Programm immer sauber nach MVC (Model, View, Controller) also immer GUI von Logik trennen.
Am besten versuchst du dein Programm gleich mal zu bearbeiten - lieber gleich richtig
Vielen vielen Dank! Du hast mir sehr geholfen! Ich habe jetzt auch wieder ein bisschen was neues Dank Dir gelernt! Dürfte ich Dich auch privat anschreiben, wenn ich mal wieder ein Problem hab?