我正在創建一個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