Avatar billede driis Nybegynder
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.
Avatar billede driis Nybegynder
16. maj 2004 - 12:21 #1
in er i øvrigt en DataInputStream.
Avatar billede riversen Nybegynder
16. maj 2004 - 12:39 #2
prøv repaint på din frame fx
Avatar billede _carsten Nybegynder
16. maj 2004 - 13:07 #3
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.
Avatar billede driis Nybegynder
16. maj 2004 - 13:35 #4
Det hjælper ikke at kalde repaint på frame'n

Jeg har sat et JTextArea ind, men det virker stadig ikke
Avatar billede _carsten Nybegynder
16. maj 2004 - 13:57 #5
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;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester