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

发布于 2024-08-19 04:47:18 字数 75 浏览 5 评论 0原文

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

I would like to create a table with the constructor method JTable(TableModel). What exact methods in the TableModel do I need to display the titles of each column?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

〆一缕阳光ご 2024-08-26 04:47:18

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

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

You need to embed your JTable within a JScrollPane and the column headings will be shown automatically:

JScrollPane sp = new JScrollPane(new JTable());
凌乱心跳 2024-08-26 04:47:18

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

You need to implement a TableModel for example by extending the class AbstractTableModel or by to using a DefaultTableModel. This later has a constructor where you can set the number and names of your columns.

美胚控场 2024-08-26 04:47:18

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

I think what you are really looking for the is the class DefaultTableModel. Just read through the documentation and you will be on your own way.

孤者何惧 2024-08-26 04:47:18

您需要在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);

You need to implement the getColumnName method in the TableModel interface
to return the column names you want.

From the Javadoc of TableModel:

String getColumnName(int columnIndex)
Returns the name of the column at columnIndex. This is used to initialize the table's column header name.

EDIT:
The abstract class AbstractTableModel provides implementation for most of the methods in interface TableModel and also provides a default implementation for
the getColumnName method in interface TableModel (but which might not suit your purpose as it returns column names as A,B..).

Create your own TableModel by subclassing AbstractTableModel and provide implemenation for the abstract methods and override getColumnName method. For example you can try something like:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文