05. december 2010 - 19:58
Der er
6 kommentarer
JTextField live update (Undgå enter)
Hej eksperter, Er det muligt at lave live-update af et JTextField? Jeg vil gerne undgå, at man skal taste enter for at få den til at opdatere mit private field, som holder en int, der modtages fra JTextField. Mvh. Janus
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
05. december 2010 - 20:04
#1
Hm. Normalt indtaster man ikke enter i et JTextField. Og hvis man laver Integer.parseInt(dittextfield.getText()) s¨bør man altid få nuværende værdi. Men er dit problem at du gerne vil have din int løbende opdateret automatisk *uden* at du skal gøre noget?
05. december 2010 - 20:26
#2
Lige præcis: Jeg vil gerne have, at mit field får parset en int ved hvert keystroke - det er i mit program ikke hensigtmæssigt, at man skal trykke enter før fieldet opdateres.
05. december 2010 - 20:41
#3
Hvis du sætter en action listener med dittextfield.addActionListener bliver den så ikke kaldt ved ændring?
05. december 2010 - 21:03
#4
Nej, det er netop dét, der er problemet: Ændringen registreres som default kun, når der tastes enter :-(.
05. december 2010 - 21:46
#5
Prøv med en DocumentListener i.s.f.! Demo: package november; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; public class TFU extends JFrame { private JTextField tf; public TFU() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Text field update"); getContentPane().setLayout(new BorderLayout()); tf = new JTextField(); tf.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("AL: " + tf.getText()); } }); tf.getDocument().addDocumentListener(new DocumentListener() { public void insertUpdate(DocumentEvent e) { System.out.println("DL ins: " + tf.getText()); } public void removeUpdate(DocumentEvent e) { System.out.println("DL rem: " + tf.getText()); } public void changedUpdate(DocumentEvent e) { System.out.println("DL chg: " + tf.getText()); } }); getContentPane().add(tf, BorderLayout.CENTER); pack(); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new TFU(); f.setVisible(true); } }); } }
26. december 2010 - 23:41
#6
OK ?
Kurser inden for grundlæggende programmering