我的 JTable 模型在 NetBeans 中的变量名称是什么?



使用示例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"
  • 在自定义创建代码中写入-> new JTable(model);
  • 在变量名中,您将看到变量名([table_name]在以下点)
  • 创建后代码写入-> [table_name].setRowSorter(sorter);

最新更新