Announcement

Collapse
No announcement yet.

JTable füllen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JTable füllen

    Hi,

    ich habe ein JFrame mit 2 JTables die wiederum jeweils in einem JScrollPane stecken.
    Ich will jetzt die beiden Tabellen mit Inhalt füllen die aus einem String[][] kommen.
    Wenn ich also sage (für die erste Tabelle):

    TableModel model = window.getmodel();
    for(int i = 0; i < 10; i++)
    {
    for(int ii = 0; ii < 3; ii++)
    model.setValueAt(result[i][ii], i, ii);
    }

    Wobei ""window"" eine Referenz auf die GUI Klasse ist
    und "getmodel()" eine Methode in der GUI Klasse aufgerufen wird die so aussieht:

    public TableModel getModel() {
    return productTable.getModel();

    Passiert was lustiges !!!
    Es werden beide Tabellen mit den selben Werten gefüllt.
    Was mach ich da falsch ???
    Hab für die zweite Tabelle ne zweite getModel() Methode.

    Oder wird das ganz anders gemacht ??

    Gruß Gandalf04

  • #2
    Wahrscheinlich für beide Tabellen das gleiche Model genutzt. Was gibt die zweite getModel-Routine zurück? Des Weiteren ist nicht klar, warum die Windowsklasse das Model zurückgibt

    DefaultTableModel dft1=new DefaultTableModel();
    dft1.setValue...
    jtable1.setModel(dft1);

    DefaultTableModel dft2=new DefaultTableModel();
    dft2.setValue...
    jtable2.setModel(dft2);

    Zum auslesen:

    DefaultTableModel dft1=(DefaultTableModel )jtable1.getModel();
    dft1.getValue....
    Christian

    Comment


    • #3
      Hi,

      die zweite getModel() Methode gibt natürlich das model von meiner zweiten Tabelle wieder.
      Heißt dann natürlich anders :-)

      Die Windows Klasse ist die Klasse in der die GUI erzeugt wird und sonst nichts !!
      Das schreiben in die Tabellen erfolgt in meine Core Klasse die
      alles sonst macht.
      Somit brauche ich ja im Core eine Referenz auf die GUI Klasse und das
      ist halt das window.

      Lustige ist auch das ich kein setModel brauche aber die Tabelle trotzdem gefüllt wird.
      Außerdem habe ich kein DefaultTabelModel zum aufnehmen der Daten erzeugt sondern nur ein TableModel.
      Muß es unbedint das Default sein ????

      Comment


      • #4
        TableModel ist ein Interface.

        Üblicherweise geht man über AbstractTableModel zu DefaultTableModel. Oder leitet von Abstract sein eigenes ab.

        die zweite getModel() Methode gibt natürlich das model von meiner zweiten Tabelle wieder.
        Heißt dann natürlich anders :-)
        Schön, das die zweite Methode anders heisst, aber gibt sie auch eine andere, neue Model-Instanz zurück?

        Wo wird ggf. den Tables die Models zugewiesen, sind das unterschiedliche?
        Christian

        Comment


        • #5
          PS:
          Schau dir im Debugger die IDs der Instanzen der Modelle an, dann sieht du erstmal ob die unterschiedlich sind oder nicht; somit also, ob irgendwo eine zweifache Zuordung erfolgt
          Christian

          Comment

          Working...
          X