【问题标题】:netbeans - Custom table model not showing in design viewnetbeans - 自定义表模型未显示在设计视图中
【发布时间】:2016-01-07 09:51:49
【问题描述】:

我正在尝试在我的 java 桌面应用程序中使用自定义 TableModel。 GUI 是使用 NetBeans 制作的。 但问题是当我使用 DefaultTableModel 时,我可以在 GUI 的设计视图中看到我的表格。

但是当我使用我的自定义 TableModel 时,它不会显示在设计视图中,尽管它在我运行应用程序时显示。

似乎是什么问题?

自定义表格模型代码

public class BillingTableModel extends AbstractTableModel implements TableModel {

    String columnNames[] = {
        "Name", "Address", "1", "2", "3"
    };

    Object data[][] = {
        {null,null,null,null,null},
        {null,null,null,null,null},
        {null,null,null,null,null},
        {null,null,null,null,null},
        {null,null,null,null,null}
    };  
    Class types[] = new Class [] {
        String.class, String.class, String.class, String.class, String.class 
    };

    @Override
    public Class<?> getColumnClass (int columnIndex) {
        return types[columnIndex].getClass();
    }

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

    @Override
    public int getRowCount() {
        return data.length;
    }

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

    @Override
    public Object getValueAt(int row, int col) {
        return data[row][col];
    }

    @Override
    public boolean isCellEditable (int row, int col) {
        if (col >= 2) 
            return true;
        else
            return false;
    }


    @Override
    public void setValueAt(Object value, int row, int col) {
        data[row][col] = value;
        fireTableCellUpdated(row, col);
    }

}

我编辑了默认代码以包含这样的类

customerTable = new javax.swing.JTable();

customerTable.setModel(new BillingTableModel());



tableScrollPane.setViewportView(customerTable);

【问题讨论】:

  • 你如何“使用”你的表格模型?

标签: java netbeans


【解决方案1】:

子类 JTable,然后您可以将自定义 JTable 拖动到 Netbeans 设计器而不是常规 JTable,您的自定义模型将已经可见。

例如。

将此文件作为 CustomerTable.java 放入您的项目中

public class CustomerTable extends JTable {

    public CustomerTable() {
        this.setModel(new BillingTableModel());
    }
}

选择文件并从菜单中选择运行 -> 编译文件。 (或按 F9)

从 Netbeans 设计视图中删除您拥有的 JTable,然后将 CustomerTable.java 从项目窗口拖到设计视图中。

【讨论】:

  • 我原以为将JTable的GUI设计器中的Model属性修改为new BuillingTableModel()就足够了,但显然不是。
  • 可能就够了,这取决于你想要什么。如果您使用内置的表格模型定制器,它会显示在设计器中。如果将模型设置为自定义代码,则可以将新代码设为 new BillingTableModel(),它可以工作,但不会显示在设计器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多