Avatar billede tripwire Nybegynder
28. august 2004 - 21:35 Der er 7 kommentarer og
1 løsning

JTextArea opdaterer ikke

Jeg har en klasse (vi kalder den klasse a) som arver fra JFrame og den har et JTextArea som den bruger og det virker fint.

Så bruger jeg en anden klasse (klasse b)som arver fra JDialog og som kalder en metode i klasse a. I den metode i klasse a, står der bl.a. denne linie "jTextArea_Log.append("noget tekst");" men det bliver ikke skrevet på mit JTextArea.

Hvis jeg kalder andre metoder i klasse a, fra klasse a, så virker ovenstående linie fint..

Hvorfor? hvad gør jeg galt?
Avatar billede arne_v Ekspert
28. august 2004 - 22:30 #1
Og du har ikke en lokal variabel jTextArea_Log som skygger for en
instans variabel jTextArea_Log ?

Ellers bliver du nok nødt til at poste lidt kode.
Avatar billede tripwire Nybegynder
28. august 2004 - 23:41 #2
Har lavet et lille eksempel..

--------areatest.java
import java.awt.event.*;

public class areatest extends javax.swing.JFrame implements ActionListener
{
    private static final areatest INSTANCE = new areatest();

    public static areatest getInstance()
    {
        return INSTANCE;
    }

    private areatest()
    {
        initComponents();
    }

    vindue v;

    private void initComponents()
    {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jScrollPane1.setViewportView(jTextArea1);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(10, 170, 380, 120);

        jButton1.setText("\u00c5ben dialog");
        getContentPane().add(jButton1);
        jButton1.setBounds(20, 80, 100, 26);
        jButton1.addActionListener(this);

        jButton2.setText("inds\u00e6t");
        getContentPane().add(jButton2);
        jButton2.setBounds(200, 80, 73, 26);
        jButton2.addActionListener(this);

        v = new vindue(this, true);

        pack();
        setSize(400,400);

    }

    private void exitForm(java.awt.event.WindowEvent evt)
    {
        System.exit(0);
    }

    public static void main(String args[])
    {
        new areatest().show();
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == jButton1)
        {
            v.setVisible(true);
        }
        if(e.getSource() == jButton2)
        {
            jTextArea1.append("noget tekst\n");
        }
    }

    public void test(String s)
    {
        System.out.println(s);

        jTextArea1.append("noget tekst fra dialog\n");
        System.out.println("nu burde der være sket noget");
    }

    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton jButton1;
    private javax.swing.JTextArea jTextArea1;
}


----------vindue.java
import java.awt.event.*;

public class vindue extends javax.swing.JDialog implements ActionListener{

    areatest area;


    public vindue(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        area = areatest.getInstance();
    }

    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });

        jButton1.setText("luk vindue og inds\u00e6t tekst");
        getContentPane().add(jButton1);
        jButton1.setBounds(80, 120, 220, 26);
        jButton1.addActionListener(this);

        pack();
        setSize(300,300);
    }

    private void closeDialog(java.awt.event.WindowEvent evt) {
        setVisible(false);
        dispose();
    }

    public static void main(String args[]) {
        new vindue(new javax.swing.JFrame(), true).show();
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == jButton1)
        {
                area.test("hej");
                setVisible(false);
                dispose();
        }
    }

    private javax.swing.JButton jButton1;

}


-------end of code
Avatar billede arne_v Ekspert
29. august 2004 - 00:00 #3
Din getInstance() metode returnerer *ikke* den rigtige instans.
Avatar billede arne_v Ekspert
29. august 2004 - 00:00 #4
import java.awt.event.*;

public class areatest extends javax.swing.JFrame implements ActionListener
{
    private areatest()
    {
        initComponents();
    }

    vindue v;

    private void initComponents()
    {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jScrollPane1.setViewportView(jTextArea1);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(10, 170, 380, 120);

        jButton1.setText("\u00c5ben dialog");
        getContentPane().add(jButton1);
        jButton1.setBounds(20, 80, 100, 26);
        jButton1.addActionListener(this);

        jButton2.setText("inds\u00e6t");
        getContentPane().add(jButton2);
        jButton2.setBounds(200, 80, 73, 26);
        jButton2.addActionListener(this);

        v = new vindue(this, true);

        pack();
        setSize(400,400);

    }

    private void exitForm(java.awt.event.WindowEvent evt)
    {
        System.exit(0);
    }

    public static void main(String args[])
    {
        new areatest().show();
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == jButton1)
        {
            v.setVisible(true);
        }
        if(e.getSource() == jButton2)
        {
            jTextArea1.append("noget tekst\n");
        }
    }

    public void test(String s)
    {
        System.out.println(s);

        jTextArea1.append("noget tekst fra dialog\n");
        System.out.println("nu burde der være sket noget");
    }

    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton jButton1;
    private javax.swing.JTextArea jTextArea1;
}
Avatar billede arne_v Ekspert
29. august 2004 - 00:01 #5
import java.awt.event.*;

public class vindue extends javax.swing.JDialog implements ActionListener{

    areatest area;


    public vindue(areatest parent, boolean modal) {
        super(parent, modal);
        initComponents();
        area = parent;
    }

    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });

        jButton1.setText("luk vindue og inds\u00e6t tekst");
        getContentPane().add(jButton1);
        jButton1.setBounds(80, 120, 220, 26);
        jButton1.addActionListener(this);

        pack();
        setSize(300,300);
    }

    private void closeDialog(java.awt.event.WindowEvent evt) {
        setVisible(false);
        dispose();
    }

  public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == jButton1)
        {
                area.test("hej");
                setVisible(false);
                dispose();
        }
    }

    private javax.swing.JButton jButton1;

}
Avatar billede arne_v Ekspert
29. august 2004 - 00:01 #6
Ovenstående kode virker - og har sågar færre linier.
Avatar billede tripwire Nybegynder
29. august 2004 - 00:17 #7
Mange tak..


læg et svar..
Avatar billede arne_v Ekspert
29. august 2004 - 11:14 #8
svar
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