使用示例TableFilterDemo
,我试图在NetBeans中创建RowFilter
,但我不能。我尝试了JCreator
的代码;我需要帮助。
我知道我不需要创建class MyTableModel extends AbstractTableModel
,因为我已经在NetBeans GUI工具中手动完成了此操作。现在,我在使用RowSorter
定义模型时遇到了一个问题。
MyTableModel model = new MyTableModel();
sorter = new TableRowSorter<MyTableModel>(model);
table = new JTable(model);
table.setRowSorter(sorter);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
就是上面的例子,我把它改成这样:
private TableRowSorter<javax.swing.table.DefaultTableModel> sorter;
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
javax.swing.table.DefaultTableModel model = new DefaultTableModel();
sorter = new TableRowSorter<javax.swing.table.DefaultTableModel>(model);
JTable jTable = new JTable(model);
jTable.setRowSorter(sorter);
正确吗?我没法让它工作。我怀疑是排序器没有添加到表中。这可能是因为定义模型部分。
我认为您没有必要创建抽象表模型。
您只需使用defaultModel并使用以下代码
voterTable.getColumnModel().getColumn(0).setPreferredWidth(65);
我假设您在GUI Builder中创建了JTable。您必须将模型添加到该表中,而不是添加到您创建的新表中。
将该方法替换为:
public NewJFrame() {
javax.swing.table.DefaultTableModel model = new DefaultTableModel();
sorter = new TableRowSorter<javax.swing.table.DefaultTableModel>(model);
initComponents();
}
并从GUI生成器中添加行排序器(将在initComponent()
中添加):
- 右键单击JTable ->属性->窗格"Code" 在自定义创建代码中写入->
- 在变量名中,您将看到变量名([table_name]在以下点)
- 创建后代码写入->
[table_name].setRowSorter(sorter);
new JTable(model);