在Java Swing中使用表模型显示表标题

时间:2010-01-22 10:38:50

标签: java swing jtable tablemodel

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

4 个答案:

答案 0 :(得分:4)

您需要将JTable嵌入JScrollPane中,列标题会自动显示:

JScrollPane sp = new JScrollPane(new JTable());

答案 1 :(得分:1)

您需要实施TableModel,例如扩展课程AbstractTableModel或使用DefaultTableModel。稍后会有constructor,您可以在其中设置列的数量和名称。

答案 2 :(得分:1)

您需要在 TableModel 界面中实现 getColumnName 方法 返回所需的列名。

来自TableModel的Javadoc:

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

修改:
抽象类 AbstractTableModel 为interface 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);

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);

答案 3 :(得分:1)

我认为你真正想要的是班级DefaultTableModel。只需仔细阅读文档,您就可以自己动手了。