Mein Problem ist kurz erklärt.
Ich habe ein GUI erstellt, in das man 3 Eingaben tätigen kann. Einmal die Länge (einer img-Datei), den Dateinamen und einen counter.
Nun ist es so, dass ich Listen von Daten habe. Diese haben bis 22,5 Mio. Elemente. Wurzel von 22,5 Mio sind ca. 4743. Bei einem quadratischen Bild ergibt das die maximale Seitenlänge.
Der Counter ist dafür da um jedes xte Element zu nehmen. Bei einem Counter von 2 wäre es dann: 22,5 Mio./sqrt(2)= max. Seitenlänge des Bildes.
Nun möchte ich, dass wenn man die Zahl für den Counter in das Textfeld eingibt, dass unter dem Feld für die Länge ein kleiner Text steht, der die maximale Länge angibt. Die Formel von oben habe ich ja. Aber wie kann ich es schaffen, damit meine GUI sich automatisch aktualisiert ohne, dass ich einen Button betätige? Also, ich gebe eine Zahl für den Counter in das Textfeld ein und der Hinweis ändert sich direkt.
Du hast die Optionen einen ActionListener zu registrieren auf deinem TextFeld, hast du es damit versucht?
Weitere Alternativen wäre ein KeyListener der bei jeder Zeicheneingabe überprüft ob der "gewünschte" bzw. erwartete Wert eingegeben wurde. Oder du könntest für jede Zeicheneingabe einen kurzen Timeout registrieren und wenn danach kein neues Zeichen eingegeben wird, aktualisierst du das Label.
Ansonsten habe ich bei StackOverflow vermehrt sowas gesehen:
Code:
textField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
// text changed?
}
public void removeUpdate(DocumentEvent e) {}
public void insertUpdate(DocumentEvent e) {
// text inserted?
}
});
Du hast die Optionen einen ActionListener zu registrieren auf deinem TextFeld, hast du es damit versucht?
Weitere Alternativen wäre ein KeyListener der bei jeder Zeicheneingabe überprüft ob der "gewünschte" bzw. erwartete Wert eingegeben wurde. Oder du könntest für jede Zeicheneingabe einen kurzen Timeout registrieren und wenn danach kein neues Zeichen eingegeben wird, aktualisierst du das Label.
Ansonsten habe ich bei StackOverflow vermehrt sowas gesehen:
Code:
textField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
// text changed?
}
public void removeUpdate(DocumentEvent e) {}
public void insertUpdate(DocumentEvent e) {
// text inserted?
}
});
Habe ich selber aber noch nicht benutzt.
Mit einem ActionListener klappt es nicht. Auch laut anderer Aussagen.
Der KeyListener stellt mich im Moment noch vor eine Herausforderung. Er will das Label nicht ändern. Ich habe gelesen, dass man darauf achten muss, was das Programm fokussiert und es da viele Probleme gibt.
Ich designe das Programm lieber etwas um. Es gibt zum Glück keinen Error, wenn die max. Länge überschritten wird. Das Ergebnis wird bloß unschön. (Bild mit weißen Rändern.
Nun mit Swing habe ich anfängliche Kenntnisse und bin anfangs auch auf viele Probleme gestoßen.. Soweit ich mich erinnere können zumindest einige initialisierte Komponenten nicht verändert werden. Nutz einfach JavaFX, dort solltest du auf solche Probleme nicht stoßen. Desweiteren wird das in den nächsten Jahren Swing sowieso ersetzen, da es schon länger kein vernünftiges Update hatte und somit vieles veraltet ist..
Zum eigentlichen Problem:
In JavaFX gibt es einen OnChange Event für Textfelder dass jedes mal ausgeführt wird, sobald sich der Inhalt ändert. Du müsstest dann vorher einfach überprüfen ob eine gültige Zahl im Feld steht und deine Berechnung durchführen, die dann einfach den Inhalt des Labels setzt..
Ansonsten benutzt du einfach das ActionPerformed-Event. Da muss der Nutzer zwar mit Enter bestätigen, aber dafür ist es weniger Fehleranfällig.
Ich würde dir auch JavaFX ans Herz legen in Verbindung mit dem Scene Builder. Allerdings solltest du eine gute Struktur im Quellcode haben, da ein größeres Projekt recht schnell unübersichtlich wird.
*Edit: Der DocumentListener ist natürlich um einiges eleganter:
Code:
jTextField1.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
}
public void removeUpdate(DocumentEvent e) {
}
public void insertUpdate(DocumentEvent e) {
jLabel1.setText(jTextField1.getText());
}
});
Wie zählt man 2 labels zoder variablen zusammen? 06/23/2012 - AutoIt - 3 Replies Hallo,
Ich bräuchte etwas Hilfe wie man 2 variablen, bzw. 2 Labels zusammenzählt.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
Rappelz - Using Shell with labels/listview items. 04/11/2012 - .NET Languages - 2 Replies This is my code :
Shell(Label4.Text & "\" & "SFrame.exe /auth_ip:" & ListView1.SelectedItems(0).SubItems(1).Text & " /locale:ASCII /country:US /cash /commercial_shop")
When I execute that command, I get an error from SFrame :
http://i44.tinypic.com/mhdp5g.jpg
What am I doing wrong? What's the correct way?
HELP! SCHWEBENDE LABELS?!? 06/05/2010 - AutoIt - 10 Replies hi leute!
ich hab ne gui gemacht...
und kann mir einer sagen wie ich schwebende labels machen kann??
danke im voraus...
Request: Metallurgy Labels in Nekojima 04/04/2010 - Mabinogi - 4 Replies If anyone can provide a tutorial on how to make this edit, it would be greatly appreciated. The spot do get kind of annoying to see when it's daylight.