16. maj 2004 - 12:20
Der er
4 kommentarer og 1 løsning
Opdatere JTextField fra anden tråd
Jeg har et JTextField på en JFrame. En anden tråd skal nu og da opdatere indholdet i dette JTextField: if ( in.available() > 1 ) { str = ""; while ( in.available() > 1 ) { str = str + in.readChar(); } System.out.println(str); out.setText(out.getText()+"\n"+str); out.validate(); } else { sleep(100); } Her er out det JTextField, jeg ønsker at opdatere. Det virker ikke, teksten i vinduet bliver ikke opdateret - hvorfor ? Jeg kan se i System.out, at str opdateres som det er tiltænkt, så det er ikke dér, problemet ligger.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
in er i øvrigt en DataInputStream.
prøv repaint på din frame fx
Du kan ikke have flere linier i et JTextField, erstat dit JTextField med et JTextArea og put dette JTextArea i et JScrollPane, så virker det.
Det hjælper ikke at kalde repaint på frame'n Jeg har sat et JTextArea ind, men det virker stadig ikke
Så må du jo have et eksempel. public class JFrame_X extends javax.swing.JFrame { public JFrame_X() { initComponents(); setSize(250, 300); } private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); out = new javax.swing.JTextArea(); jButton1 = new javax.swing.JButton(); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jScrollPane1.setViewportView(out); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); jButton1.setText("Fyld JTextArea med tekst"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addText(evt); } }); getContentPane().add(jButton1, java.awt.BorderLayout.NORTH); pack(); } private void addText(java.awt.event.ActionEvent evt) { String str = ""; for(int i = 0; i < 1000; i++){ str += "\n" + i; } out.setText(out.getText()+"\n"+str); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public static void main(String args[]) { new JFrame_X().show(); } private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea out; }
Kurser inden for grundlæggende programmering