So, habs mal ausgetestet, nur entspricht es nicht meinen Vorstellungen.
Mein Problem:
a)
Im JBuilder kann man die Ereignisse jedem Element direkt per Doppelklick zuordnen,
auch das KeyTyped-Event.
Wo ist der Unterschied zwischen dem KeyTyped aus dem JBuilder und dem,
welches Du mir gegeben hast?
b)
Ich habe das KeyTyped-Event vom JBuilder mal eingebunden und Deine Methode reingepackt.
Nach ein paar Spielereien hab ich es erstmal so realisiert,
dass Daten, die ins TextFeld A eingegeben werden, in TextFeld B übernommen werden.
Jedoch mit einem Anschlag Verzögerung.
Soll heissen, wenn ich im TextFeld A '5322' eingebe, erscheint im TextFeld B nur '532'.
'53221' -> '5322' ... usw. ... also übernimmt das Feld den letzten Anschlag und nicht den sofortigen.
Mein Code, der mit Sicherheit total falsch ist,
da ich es wohl doppelt gemoppelt mache.
Code:
void jTextField_ul_keyTyped(KeyEvent e) {
jTextField_ul.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
String ul = jTextField_ul.getText().toString();
jTextField_dl.setText(ul);
}
});
}
c)
Ich musste eine neue Methode nehmen,
wo ich den Code von oben eingebunden habe,
weil ich nicht weiss, wie ich das Ganze sonst laufzeitfähig mache,
sodass der KeyListener immer auf einen Anschlag wartet.
Das liegt wohl daran, dass ich sonst immer nur mit Buttons programmiert habe,
dies aber zu meinem Vorteil erweitern wollte.
d)
Selbst wenn ich die Daten im TextFeld ändere, passiert rein gar nichts im Label.
Woran könnte das liegen?
Muss ich das Label auch noch mit einem Listener versehen?
Code:
public class Adder{
String Summe;
[...]
jLabel_summe.setText("Gesamttraffic: " + Summe + " Byte");
[...]
void jTextField_ul_keyTyped(KeyEvent e) {
jTextField_ul.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
try{
String ul = jTextField_ul.getText().toString();
int ul_traffic = Integer.parseInt(ul);
Summe = ul_traffic;
}
catch(Exception ex){
JOptionPane.showMessageDialog(this,"Error: Keine Zahlen!");
}
}
});
}
Egal was ich ins TextField eingebe,
die Summe bleibt gleich...
und rufe jLabel_summe.setText("Gesamttraffic: " + Summe + " Byte"); nochmal auf, damit der neue Inhalt der Variabeln auch ins Label geschrieben wird...
Hat soweit geklappt,
nur der Anschlag kommt immernoch zu spät.
Sieht so aus, als würde eine eingegebene Zahl im Speicher hängen
und erst dann reingeschoben werden, wenn der nächste Anschlag erfolgt.
Wie kann ich eigentlich 'nur' Zahlen in einem TextField erlauben?
.oO( wobei so ein JSpinner auch ganz nett ausschaut )Oo.
wären wir jetzt nicht in java sondern in c und nicht unter windows würde ich sagen: verbiege den interrupt controller auf deine methode und lese die scan codes aus, auf die art und weise hab ich damals eine 2-personen-gleichzeitig-an-einer-tastatur-steuerung für ein spiel realisiert *nostalgisch werd*