1

我想用构造方法 JTable(TableModel) 创建一个表。我需要 TableModel 中的哪些确切方法来显示每列的标题?

4

4 回答 4

4

您需要将您的嵌入JTable到 a 中JScrollPane,并且列标题将自动显示:

JScrollPane sp = new JScrollPane(new JTable());
于 2010-01-22T10:55:37.463 回答
1

例如,您需要通过扩展类AbstractTableModel或使用DefaultTableModel来实现TableModel。这稍后有一个构造函数,您可以在其中设置列的数量和名称。

于 2010-01-22T11:14:39.780 回答
1

您需要在TableModel接口中实现getColumnName方法以返回您想要的列名。

来自 TableModel 的 Javadoc:

String getColumnName(int columnIndex)
返回 columnIndex 处的列名。这用于初始化表的列标题名称。

编辑:
抽象类AbstractTableModel为接口TableModel中的大多数方法提供了实现,并且还为接口TableModel中的getColumnName方法提供了默认实现(但这可能不适合您的目的,因为它将列名返回为 A、B ..)。

通过继承AbstractTableModel创建您自己的 TableModel,并为抽象方法提供实现并覆盖getColumnName方法。例如,您可以尝试以下操作:

class MyTableModel extends AbstractTableModel {
   private List<String> rowData; // say 
   private List<String> columnNames; 

   MyTableModel(List<String> data,List<String> names) {
       rowData = data;
       columnNames = names;
   }

   // provide implementation of abstract methods
   public int getRowCount() {...}
   public int getColumnCount() {...} 
   public Object getValueAt(int row, int column) {...}

   @Override
   public String getColumnName(int pCol) {
       return columnNames.get(pCol);
   }
   ...
}

// create your table as below;
List<String> data = new ArrayList<String>();
data.add("Test");
data.add("Try");

List<String> colNames = new ArrayList<String>();
colNames.add("Name");

MyTableModel model = new MyTableModel(data,colNames);
JTable myTable = new JTable(model);

于 2010-01-22T11:16:16.170 回答
1

我认为您真正要寻找的是DefaultTableModel类。只需通读文档,您就会走自己的路。

于 2010-01-22T11:23:35.183 回答