Übergeben von Variablen von einem Objekt zum nächsten

Status
Nicht offen für weitere Antworten.
C

Curryhuhn

Gast
Hallo!

Ich versuche gerade ein kleines Tool zu schreiben, dass jede Sekunde einen Datensatz in eine Tabelle schreibt. Doch weiss ich nicht, wie ich von der Klasse "Task" aus eine Zeile in dem TableModel der Klasse "TableTest" erstellen soll.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;

import java.util.*;

public class TableTest extends JFrame implements ActionListener {

    private Object[] data = new Object[3];
    private DefaultTableModel model = new DefaultTableModel();
    private JTable table = new JTable(model);
    
    public TableTest() {
        super("TableTest");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        model.addColumn("Time");
        model.addColumn("Pixel");
        model.addColumn("Distance");
              
        
        JPanel  contentPane = new JPanel();
        JButton button = new JButton("Add Row");
        
        button.addActionListener(this);
           
        contentPane.add(button, BorderLayout.NORTH);
        contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
        
        setContentPane(contentPane);
        
        java.util.Timer timer = new java.util.Timer();
        timer.schedule(new Task(this), 1000, 1000);
    }
    
    public void actionPerformed(ActionEvent e) {
        int rowCount = model.getRowCount();
        
        for(int column = 0; column < 3; ++column) {
            data[column] = "(" + rowCount + "," + column + ")";
        }
        
        model.addRow(data);
    }
    
    public void addDataRow(Object data) {
        model.addRow(data);
    } 
    
    public static void main(String[] args) {
        TableTest frame = new TableTest();
        frame.pack();
        frame.setVisible(true);
    }
}

class Task extends TimerTask {
    
    public Object source;
    
    public void Task(Object s) {
        source = s;
    }
    
    public void run() {
        Object[] data = new Object[3];
        
        data[0] = "Ein";
        data[1] = "kleiner";
        data[2] = "Test";
        
        System.out.println("Ein kleiner Test");
        s.addDataRow(data);

        // irgendwie muss jetzt data der Methode model.addRow(data) übergeben werden
    }
}

Über eure Hilfe würde ich mich sehr freuen!
 
S

SlaterB

Gast
warum hast du als Parameter des Task-Konstruktors Object?
es wird doch TableTest übergeben, speichere das als

public TableTest source;
oder besser
private TableTest source;

dann kannst du in run
this.source.getModel() aufrufen,
falls du in TableTest noch eine entsprechende Operation getModel() implementierst

oder noch besser
this.source.addDataRow(..)
die ist schöner und gibts ja schon

allerdings gibts
addRow(Object data);
in DefaultTableModel gar nicht, es muss ein Object[] oder ein Vector sein
 
C

Curryhuhn

Gast
Hallo SlaterB!

Vielen Dank für deine Antwort! Ich habe mal probiert es umzusetzen. Allerdings gibt es jetzt noch beim Compilieren die Meldung "Cannot find Symbol" für die Zeilen 37, 70 und 78.

Wie kann ich es verbessern?

Code:
package test;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;

import java.util.*;

public class TableTest extends JFrame implements ActionListener {

    private Object[] data = new Object[3];
    private DefaultTableModel model = new DefaultTableModel();
    private JTable table = new JTable(model);
    
    public TableTest() {
        super("TableTest");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        model.addColumn("Time");
        model.addColumn("Pixel");
        model.addColumn("Distance");
              
        
        JPanel  contentPane = new JPanel();
        JButton button = new JButton("Add Row");
        
        button.addActionListener(this);
           
        contentPane.add(button, BorderLayout.NORTH);
        contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
        
        setContentPane(contentPane);
        
        java.util.Timer timer = new java.util.Timer();
        timer.schedule(new Task(this), 1000, 1000);
    }
    
    public void actionPerformed(ActionEvent e) {
        int rowCount = model.getRowCount();
        
        for(int column = 0; column < 3; ++column) {
            data[column] = "(" + rowCount + "," + column + ")";
        }
        
        model.addRow(data);
    }
      
    public static void main(String[] args) {
        TableTest frame = new TableTest();
        frame.pack();
        frame.setVisible(true);
    }
    
    public DefaultTableModel getModel() {
        return (model);
    }
}

class Task extends TimerTask {
    
    public Object source;
    
    public void Task(Object s) {
        source = s;
    }
    
    public void run() {
        DefaultTableModel model = source.getModel();
        Object[] data = new Object[3];
        
        data[0] = "Ein";
        data[1] = "kleiner";
        data[2] = "Test";
        
        System.out.println("Ein kleiner Test");
        source.model.addRow(data);

        // irgendwie muss jetzt data der Methode model.addRow(data) übergeben werden
    }
}
 
S

SlaterB

Gast
hast du mein Posting nur hab gelesen oder wie?
zumindest die von mir explizit genannte Codezeile
private TableTest source;
müsste doch in deinen Code auftauchen..

aber das reicht natürlich noch nicht, im Konstruktor muss der Parameter vom Typ TableTest sein, wie geschrieben,
usw. ein bisschen selber denken ist schon die Vorausetzung fürs Programmieren

-----------

> source.model.addRow(data);


die Operation

public void addDataRow(Object data) {
model.addRow(data);
}

ist doch gar nicht mehr da..
 
G

Guest

Gast
Ich habe es jetzt noch einmal umgeschrieben und es scheint fast zu gehen.

Jetzt kommt es noch in Zeile 66 zu "cannot find symbol" in der Methode "addDataRow(Object data)". Allerdings verstehe ich das nicht. Der Aufruf ist derselbe wie in Zeile 52 in der Methode "actionPerformed(ActionEvent e)" und beide Methoden befinden sich in derselben Klasse.

In Zeile 42 mochte er scheinbar nicht das "this" von "new Task(this)". Deshalb habe ich das jetzt etwas umgestellt und diesbezüglich nörgelt der Compiler auch nicht mehr. Aber warum führt "new Task(this)" hier zu einem Fehler?

Code:
package test;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TableTest extends JFrame implements ActionListener {

    private Object[] data = new Object[3];
    private DefaultTableModel model = new DefaultTableModel();
    private JTable table = new JTable(model);
    
    public TableTest() {
        super("TableTest");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        model.addColumn("Time");
        model.addColumn("Pixel");
        model.addColumn("Distance");
              
        
        JPanel  contentPane = new JPanel();
        JButton button = new JButton("Add Row");
        
        button.addActionListener(this);
           
        contentPane.add(button, BorderLayout.NORTH);
        contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
        
        setContentPane(contentPane);
        
        java.util.Timer timer = new java.util.Timer();
        Task task = new Task();
        task.setSource(this);
        timer.schedule(task, 1000, 1000);
    }
    
    public void actionPerformed(ActionEvent e) {
        int rowCount = model.getRowCount();
        
        for(int column = 0; column < 3; ++column) {
            data[column] = "(" + rowCount + "," + column + ")";
        }
        
        model.addRow(data);
    }
      
    public static void main(String[] args) {
        TableTest frame = new TableTest();
        frame.pack();
        frame.setVisible(true);
    }
    
//    public DefaultTableModel getModel() {
//        return (model);
//    }
    
    public void addDataRow(Object data) {
        model.addRow(data);
    } 
}

class Task extends TimerTask {
    
    public TableTest source;
        
        public void setSource(TableTest s) {
            source = s;
        }
    
        public void run() {
        Object[] data = new Object[3];
        
        data[0] = "Ein";
        data[1] = "kleiner";
        data[2] = "Test";
        
        System.out.println("Ein kleiner Test");
        source.addDataRow(data);
    }
}
 
S

SlaterB

Gast
> Aber warum führt "new Task(this)" hier zu einem Fehler?

es ist doch gar kein Konstruktor mit Paramter da,
falls mal einer da war, dann musst du ihn posten, sonst kann man den Fehler doch nicht nachvollziehen..

> Der Aufruf ist derselbe wie in Zeile 52

Variablen-Namen sind nicht alles, in Zeile 52 ist data korrekt ein Object[] (das aus Zeile 16)
in Zeile 66 ist data dagegen ein einfaches Object und das geht natürlich nicht, du musst ein Object[] an das TableModel übergeben
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Übergeben einer Objektreferenz Java Basics - Anfänger-Themen 6
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
R Problem bei Übergeben eines Objekts Java Basics - Anfänger-Themen 1
A Variablen Übergeben des Inhalts einer Variable in einen String Java Basics - Anfänger-Themen 17
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
V OOP Übergeben von Arrays per Konstruktor Java Basics - Anfänger-Themen 16
M Fehler beim Übergeben von Daten an JTable Java Basics - Anfänger-Themen 14
P Arrays Übergeben Java Basics - Anfänger-Themen 7
D Hilfe beim Übergeben vom JTextfield Java Basics - Anfänger-Themen 2
M Methode einer Klasse in eine andere Übergeben Java Basics - Anfänger-Themen 4
M Übergeben einer Variable an actionPerformed(ActionEvent e)? Java Basics - Anfänger-Themen 5
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben