Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
Java:
public class GUI
{
GUILogin guiLogin;
public GUI()
{
guiLogin = new GUILogin();
guiLogin.setLabelText("Foobar");
}
}
Java:
public class GUILogin
{
private JLabel label;
public GUILogin()
{
label = new JLabel("bar");
...
}
public void setLabelText(String text)
{
this.label.setText(text);
}
public String getLabelText()
{
return this.label.getText();
}
}
Hat es einen tieferen Sinn, dass deine Variablen static sind?
Ist eigentlich unnötig.
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:
Java:
public class GUI
{
GUILogin guiLogin;
public GUI()
{
guiLogin = new GUILogin();
guiLogin.setLabelText("Foobar");
}
}
Java:
public class GUILogin
{
private JLabel label;
public GUILogin()
{
label = new JLabel("bar");
...
}
public void setLabelText(String text)
{
this.label.setText(text);
}
public String getLabelText()
{
return this.label.getText();
}
}
Hat es einen tieferen Sinn, dass deine Variablen static sind?
Ist eigentlich unnötig.
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.
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.
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:
class ActionLogin implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
JFrame GUILogin = new GUILogin(TextN); // <---- Du übergibst deinem Konstruktor von GUILogin als Param das JLabel
GUILogin.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:
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:
class ActionCheck implements ActionListener {
public void actionPerformed(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:
class ActionLogin implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
JFrame GUILogin = new GUILogin(TextN); // <---- Du übergibst deinem Konstruktor von GUILogin als Param das JLabel
GUILogin.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:
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:
class ActionCheck implements ActionListener {
public void actionPerformed(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?