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?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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.
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
29. august 2004 - 00:00
#3
Din getInstance() metode returnerer *ikke* den rigtige instans.
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; }
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; }
29. august 2004 - 00:01
#6
Ovenstående kode virker - og har sågar færre linier.
29. august 2004 - 00:17
#7
Mange tak.. læg et svar..
29. august 2004 - 11:14
#8
svar
Kurser inden for grundlæggende programmering