Kann nicht scheinen, um die TableModelListener zu arbeiten

Ich bin erstellen einer UI-Klasse, in der alles ausgeführt wird (eine andere Klasse wird wie der Läufer). In dieser Klasse habe ich eine Tabelle und die Tabelle erzeugen soll TableModeEvents, wenn geändert, aber es scheint nicht zu tun.

Die Konsole soll zum drucken von "test" immer wenn ich etwas auf den Tisch, aber es ist nicht. Ich habe andere SSCCE und Sie funktionieren gut, solange ich alles in einem Programm (in der main-Methode und mit nur Unterklassen und anonyme Klassen), aber ich kann nicht scheinen, um es zu arbeiten in den Klassen.

Irgendeine Idee, was ich falsch mache?

package SSCCE;

import java.awt.BorderLayout;

import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

public class SSCCE {

static Object[][] data = { {"Abyss", Boolean.FALSE},{"Scepter", Boolean.FALSE},{"FoN", Boolean.FALSE} };
public static void main(String[] args){

    //table model------------------------------------------
    TableModel model = new AbstractTableModel(){
        Object[][] rowData = { {"Abyss", Boolean.FALSE},{"Scepter", Boolean.FALSE},{"FoN", Boolean.FALSE} };
        String[] columnNames = {"Name","Boolean"};

        public int getColumnCount() {return columnNames.length;}

          public String getColumnName(int column) {return columnNames[column];}

          public int getRowCount() {return rowData.length;}

          public Object getValueAt(int row, int column) {return rowData[row][column];}

          public Class getColumnClass(int column) {return (getValueAt(0, column).getClass());}

          public void setValueAt(Object value, int row, int column) {rowData[row][column] = value;}

          public boolean isCellEditable(int row, int column) {return (true);}
    };


    JTable table = new JTable(model);
    //tableChanged------------------------------------------
    model.addTableModelListener(new TableModelListener(){
        public void tableChanged(TableModelEvent e) {
            System.out.println("test");
        }

    });

    //frame stuff, ignore-----------------------------------
    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());
    frame.add(table,BorderLayout.CENTER);
    frame.setSize(500,400);
    frame.setLocation(400,200);
    frame.setDefaultCloseOperation(3);
    frame.setVisible(true);

}

}
  • Ich glaube nicht, dass es keine Möglichkeit zu sagen, was du falsch machst basiert auf dem code und text, den Sie gepostet haben, so weit. Betrachten Sie die Erstellung und Veröffentlichung einer SSCCE, die zeigt, dass das dein problem und sicher mit mehr als einer Klasse (aber setzen Sie Sie in eine Datei) und du wirst wahrscheinlich bessere Ergebnisse hier.
  • Voller Aale +1 für den Hinweis auf diese eine Quelle-Datei kann mehr als eine Klasse. Zitat aus der die "Richtige" Sektion der SSCCE Dokument. "Wenn die Sprache gibt nur eine einzige öffentliche Klasse pro Quellcode-Datei, herabstufen, alle anderen Klassen zum Standard. Dies ermöglicht das Beispiel kompiliert werden, ohne dass Sie in separate Dateien aufgeteilt."
  • Ok, Zugegeben ein SSCCE. Vielen Dank für das lassen mich wissen.
InformationsquelleAutor Nacht | 2011-10-04
Schreibe einen Kommentar