我想用构造函数方法JTable(TableModel)创建一个表。我需要在TableModel中使用哪些确切的方法来显示每列的标题?
答案 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。只需仔细阅读文档,您就可以自己动手了。