Problem mit Code aus JTable Tutorial

Status
Nicht offen für weitere Antworten.

MASTERmind

Bekanntes Mitglied
hallo!

habe folgende klassen kopiert und ausprobiert:
Code:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class JTableDemo{
   public static void main( String[] args ){
      // Unser TableModel (siehe unten)
      Model model = new Model();

      // Das JTable initialisieren
      JTable table = new JTable( model );

      JFrame frame = new JFrame( "Demo" );
      frame.getContentPane().add( new JScrollPane( table ) );

      frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      frame.pack();
      frame.setVisible( true );
   }
}
und:
Code:
class Model {
   private String[] strings;
   private int[] integers;
   private double[] doubles;
   private boolean[] booleans;

      public Model(){
         strings = new String[]{ "hallo", "ich", "bin", "eine", "Demo" };
         integers = new int[]{ 1, 2, 3, 4, 5 };
         doubles = new double[]{ 1.2, 3.4, 5.6, 7.8, 9.11 };
         booleans = new boolean[]{ true, false, false, true, true };
      }

      // Die Anzahl Columns
      public int getColumnCount() {
         return 4;
      }

      // Die Anzahl Rows
      public int getRowCount() {
         return 5;
      }

      // Die Titel der einzelnen Columns
      public String getColumnName(int column) {
         switch( column ){
            case 0: return "String";
            case 1: return "Integer";
            case 2: return "Double";
            case 3: return "Boolean";
            default: return null;
         }
      }

      // Der Wert der Zelle (rowIndex, columnIndex)
      public Object getValueAt(int rowIndex, int columnIndex) {
         switch( columnIndex ){
            case 0: return strings[ rowIndex ];
            case 1: return new Integer( integers[ rowIndex ] );
            case 2: return new Double( doubles[ rowIndex ] );
            case 3: return new Boolean( booleans[ rowIndex ] );
            default: return null;
         }
      }

      // Eine Angabe, welchen Typ von Objekten in den Columns angezeigt werden soll
      public Class getColumnClass(int columnIndex) {
         switch( columnIndex ){
            case 0: return String.class;
            case 1: return Integer.class;
            case 2: return Double.class;
            case 3: return Boolean.class;
            default: return null;
         }
      }

      // Jede Zelle ist editierbar
   public boolean isCellEditable(int rowIndex, int columnIndex) {
      return true;
   }

   // Wird aufgerufen, falls der Wert einer Zelle verändert wurde
   public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
      switch( columnIndex ){
         case 0:
            strings[ rowIndex ] = aValue.toString();
            break;
         case 1:
            integers[ rowIndex ] = ((Integer)aValue).intValue();
            break;
         case 2:
            doubles[ rowIndex ] = ((Double)aValue).doubleValue();
            break;
         case 3:
            booleans[ rowIndex ] = ((Boolean)aValue).booleanValue();
      }
   }
}

Der blöde Compiler kennt aber den Konstruktor nicht:(
Code:
 JTable table = new JTable( model );

Fehlermeldung:
Compiliere H:\javaprogramme\test\JTableDemo.java mit Java-Compiler
JTableDemo.java:12: cannot find symbol
symbol : constructor JTable(Model)
location: class javax.swing.JTable
JTable table = new JTable( model );
[/code]
 

mayer

Aktives Mitglied
Hallo! Deine Klasse Model muss von einem TableModel erben. Ansonst weiß der JTable Konstruktor nicht, dass das ein Model ist. Und deshalb der Fehler.

z.B.:
Code:
class Model extends DefaultTableModel {...}
oder
Code:
class Model extends AbstractTableModel {...}
 

MASTERmind

Bekanntes Mitglied
dann sagt er aber dass er weder: extends DefaultTableModel noch
extends AbstractTableModel kennt!

Compiliere H:\javaprogramme\test\Model.java mit Java-Compiler
Model.java:1: cannot find symbol
symbol: class DefaultTableModel
class Model extends DefaultTableModel
 

Murray

Top Contributor
mayer hat gesagt.:
Hallo! Deine Klasse Model muss von einem TableModel erben. Ansonst weiß der JTable Konstruktor nicht, dass das ein Model ist. Und deshalb der Fehler.
Das ist nicht ganz richtig: TableModel ist ein Interface, daher ist es lediglich notwendig, dass die Klasse Model dieses Interface implementiert:
Code:
class Model implements TableModel {
}

Das Erben von einer anderen TabelModel-Implementierung ist eine Erleichterung, mit der man eben nur genau die Funktionen implementieren muss, bei denen man etwas anderes als das Default-Verhalten erreichen will.
 

MASTERmind

Bekanntes Mitglied
aber leider geht auch das nicht!....

Compiliere H:\javaprogramme\test\Model.java mit Java-Compiler
Model.java:1: cannot find symbol
symbol: class TableModel
class Model implements TableModel
^
1 error

ich habe die beiden klassen in zwei dateien aber unter dem selben ordner...das ist doch wohl richtig oder?
 

mayer

Aktives Mitglied
Aber mit AbstractTableModel ist es einfacher, da man nicht jede Funktion implementieren muss.

Hast den import auch nicht vergessen.

Code:
import javax.swing.table.AbstractTableModel
oder
Code:
import javax.swing.table.TableModel


mfg manuel
 

Murray

Top Contributor
mayer hat gesagt.:
Aber mit AbstractTableModel ist es einfacher, da man nicht jede Funktion implementieren muss.
Das ist richtig, aber das hat er ja schon getan. :wink:

Grundsätzlich hast Du aber natürlich recht; solche sog. Adapter-Klassen wurden ja eingeführt, weil man ansonsten ständig irgendwelche Methoden implementieren musste, in denen man dann letztendlich nichts machen wollte - siehe die diversen EventListener
 

MASTERmind

Bekanntes Mitglied
das ist klar also was AdapterKlassen können wie zb WindowClosingAdapter aber diese S....läuft nicht *schnief*
 

MASTERmind

Bekanntes Mitglied
so siehts aus im moment:
Code:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class JTableDemo{
   public static void main( String[] args ){
      // Unser TableModel (siehe unten)
      Model model = new Model();

      // Das JTable initialisieren
      JTable table = new JTable( model );

      JFrame frame = new JFrame( "Demo" );
      frame.getContentPane().add( new JScrollPane( table ) );

      frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      frame.pack();
      frame.setVisible( true );
   }
}
Code:
import javax.swing.table.AbstractTableModel;

class Model implements AbstractTableModel
{
   private String[] strings;
   private int[] integers;
   private double[] doubles;
   private boolean[] booleans;

      public Model(){
         strings = new String[]{ "hallo", "ich", "bin", "eine", "Demo" };
         integers = new int[]{ 1, 2, 3, 4, 5 };
         doubles = new double[]{ 1.2, 3.4, 5.6, 7.8, 9.11 };
         booleans = new boolean[]{ true, false, false, true, true };
      }

      // Die Anzahl Columns
      public int getColumnCount() {
         return 4;
      }

      // Die Anzahl Rows
      public int getRowCount() {
         return 5;
      }

      // Die Titel der einzelnen Columns
      public String getColumnName(int column) {
         switch( column ){
            case 0: return "String";
            case 1: return "Integer";
            case 2: return "Double";
            case 3: return "Boolean";
            default: return null;
         }
      }

      // Der Wert der Zelle (rowIndex, columnIndex)
      public Object getValueAt(int rowIndex, int columnIndex) {
         switch( columnIndex ){
            case 0: return strings[ rowIndex ];
            case 1: return new Integer( integers[ rowIndex ] );
            case 2: return new Double( doubles[ rowIndex ] );
            case 3: return new Boolean( booleans[ rowIndex ] );
            default: return null;
         }
      }

      // Eine Angabe, welchen Typ von Objekten in den Columns angezeigt werden soll
      public Class getColumnClass(int columnIndex) {
         switch( columnIndex ){
            case 0: return String.class;
            case 1: return Integer.class;
            case 2: return Double.class;
            case 3: return Boolean.class;
            default: return null;
         }
      }

      // Jede Zelle ist editierbar
   public boolean isCellEditable(int rowIndex, int columnIndex) {
      return true;
   }

   // Wird aufgerufen, falls der Wert einer Zelle verändert wurde
   public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
      switch( columnIndex ){
         case 0:
            strings[ rowIndex ] = aValue.toString();
            break;
         case 1:
            integers[ rowIndex ] = ((Integer)aValue).intValue();
            break;
         case 2:
            doubles[ rowIndex ] = ((Double)aValue).doubleValue();
            break;
         case 3:
            booleans[ rowIndex ] = ((Boolean)aValue).booleanValue();
      }
   }
}
 

Murray

Top Contributor
Da müsste eigentlich der Compiler meckern: TableModel ist das Interface, AbstractTableModel die (Adapter-)Klasse.

Also entweder
Code:
class Model implements TableModel
oder
Code:
class Model extends AbstractTableModel

/EDIT: Typo
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
A Code Problem Java Basics - Anfänger-Themen 6
R Problem mit Code Java Basics - Anfänger-Themen 3
N Problem bei meinem Code Java Basics - Anfänger-Themen 10
M Problem: code too large - bitte um Hilfe Java Basics - Anfänger-Themen 12
J problem (kann meinen Code nicht kompilieren) Java Basics - Anfänger-Themen 3
A If-Schleife spinnt - ganz einfach Code - Riesen Problem :) Java Basics - Anfänger-Themen 9
Developer_X Problem mit Klammern im Code Java Basics - Anfänger-Themen 17
E Nativen Code verwenden mit Jna, Pointer problem Java Basics - Anfänger-Themen 7
B ArrayList Code-Problem Java Basics - Anfänger-Themen 36
A Weg vom Problem zum Code Java Basics - Anfänger-Themen 5
K Problem mit Code! Java Basics - Anfänger-Themen 11
C Problem mit Code aus "Sprechen Sie Java" Java Basics - Anfänger-Themen 13
A Einsteiger-Problem - Frage zu Code Java Basics - Anfänger-Themen 10
K Problem mit Source Code Java Basics - Anfänger-Themen 2
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben