我正在创建一个UI类,其中一切都将运行(不同的类将作为跑步者)。在这个类中,我有一个表格,表格应该在更改时创建TableModeEvents,但似乎没有这样做。似乎无法让TableModelListener正常工作
控制台应该打印出“测试”,只要我对表做任何事情,但事实并非如此。我做了其他的SSCCE,只要我把所有东西放在一个程序中(在主要方法中,只有子类和匿名类),但它们工作得很好,但我似乎无法让它在类中工作。
任何想法我做错了什么?
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);
}
}
我不认为有任何的方式来告诉你根据到目前为止你已经发布的代码和文本做错了什么。考虑创建并发布一个显示你的问题的[SSCCE](http://SSCCE.org),并确保使用多个类(但将它们放在一个文件中),你可能会在这里获得更好的结果。 –
@Hovercraft Full Of Eels +1指出一个源文件可以包含多个类。引用SSCCE文件的['Correct'部分](http://pscode.org/sscce.html#co)。 *“如果语言只为每个源代码文件指定一个公共类,则将所有其他类降级为默认值,这样就可以在不分割成单独文件的情况下编译该示例。”* –
好了,添加了一个SSCCE。谢谢你让我知道。 – Nacht