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.
Hallo ich habe folgendes Problem:
1.
Ich habe eine GUI-Klasse. Ich nenne diese Klasse mal Klasse1. Hier werden einige Buttons, und JTextFields definiert und positioniert.
2.
Dann habe ich noch eine zweite Klasse2 in der eine Variable int X_Pos definiert ist.
Die Variable int X_Pos ändert sich laufend je nach dem, welchen Button man gedrückt hat.
Problem bzw. Frage:
Ich benötige auf dem Interface ein Ausgabefeld, dass mir die aktuelle X_POS anzeigt.
Mache ich das am besten mit JTextField?
Wie aktualisiere ich am besten die Ausgabe am Bildschirm?
Vielen Dank an alle die sich die Zeit nehmen mir zu helfen.
am besten ist es, wenn du den entsprechenden Code kurz posten würdest.
Ansonsten kannst du nach belieben auch ein JLabel verwenden -> damit wird einfach ein Text auf der GUI angezeigt.
[Java]
// JLabel-Instanz erstellen
JLabel label = new JLabel();
// das JLabel auf dein JFrame packen
frame.add(label)
// im ActionListener kannst du den Text setzen,
// dabei muss ein entsprechender Getter für deine PosX-Variable vorhanden sein
label.setText(Klasse2.getPosX());
[/Java]
Ansonsten noch mal (mit Code-Beispiel) nachfragen
Edit: grade noch gesehen, dass sich der Wert "laufend" ändert. Die Aktualisierung des JLabels sollte dann dort erfolgen, wo auch PosX aktualisiert wird.
Danke für die Antworten.
Ich versuche das Problem mit Observer zu lösen, habe aber ein Problem:
Wie gesagt: Klasse1 hat ein JTextField dessen Feld immer aktualisiert werden muss. Klasse2 übergibt an Klasse1 JTextField eine die Variable X_Pos. (wenn eine Änderung des Wertes stattfindet.)
Ich habe noch nie mit Observern zu tun gehabt. Ist der Ansatz unten richtig?
Klasse1:
Java:
public class Klasse1 extends JFrame implements Observer {
private JTextField M1_Abs_Pos;
public Klasse1() {
M1_Abs_Pos = new JTextField("");
add(M1_Abs_Pos);
class OhrenAuf implements Observer{
public void update(Observable o, Object arg) {
M1_Abs_Pos.setText((String) arg);
}
}
}
}
Klasse2
Java:
public class Klasse2 {
public Klasse2() {
class Erzaehler extends Observable {
public Erzaehler(){
this.addObserver(new OhrenAuf());
erzaehl(X_Pos);
}
public void erzaehl(String info){
if(countObservers()>0){
setChanged();
notifyObservers(info);
}
}
}
}
}
Nun meine Frage:
Wenn der Ansatz Richtig ist, wie muss die Zeile this.addObserver(new OhrenAuf()) in Klasse2 aussehen, damit Klasse1 zuhört?