JTable 及其与数据源的关系
JTable and its Relationship with the Data Source
我正在构建一个程序,该程序收集符合一组特定条件的文件的几个列表,并根据来源、文件类型等适当地处理它们...我希望它会查找文件并将它们显示在易于阅读的列表中。用户将从列表中 select 哪些文件将被处理,然后点击 "starts the commotion," 按钮。
现在,我制作了一个名为 DrawingFile 的 class,看起来像:
class DrawingFile {
private static String fileName, fileType;
private static boolean actionable;
private static Path filePath;
public DrawingFile (Path path){
setFilePath(path);
setFileName(stripExtension(path));
setFileType(getExtension(path));
setActionable(true);
}
...(methods omitted to save time)...
我的计划最初是创建一个基于 DrawingFiles 列表填充的 JTable,其中对象中的每个字段都是 table 中的一列,但不会显示的路径除外在 table 上。从那里,用户将单击一个复选框,该复选框将决定是否要对文件进行操作。
我的问题首先源于我对编程还比较陌生。这是我编写的第一个人们将要使用的程序,它也有任何类型的 UI.
因此我的问题是:
- 我的上述计划是否有意义?
- 将 table 排除在外并在容器内创建一系列 JPanel 是否更有意义? (这似乎不是最佳做法)
- 如果我选择 table,我是否应该废弃 DrawingFile class 并将数据存储在 TableModel 中?
3a.如果是这样,有没有办法可以隐藏 table 中的路径?
actionable
布尔值在 table 上(未)选中时如何更改它?
- 在 1-10 的范围内,我对这个问题的思考有多严重?
- 如果我没理解错的话,您有一个 DrawingFile 对象列表,并希望将此列表显示为 JTable,其中每一行代表列表的一个对象。是的,这很有道理。
- 没有。 table 非常适合。
- 没有。您应该创建一个自定义 DrawingFileTableModel class,扩展 AsbtractTableModel,并使用对象列表作为源来实现该方法。 Google 对应 "Java tutorial JTable",您将在 the official tutorial 中找到示例。
- 通过确保
isCellEditable()
return 对于该列和行为真,并正确实施 setValueAt()
和 getColumnClass()
方法。 javadoc 和教程是您的朋友。 setValueAt()
,当使用布尔列的索引调用时,应在存储在后备列表中给定行索引处的 DrawingFile 中设置其新值。 getColumnClass()
,当用布尔列的索引调用时,应该return Boolean.class
.
我正在构建一个程序,该程序收集符合一组特定条件的文件的几个列表,并根据来源、文件类型等适当地处理它们...我希望它会查找文件并将它们显示在易于阅读的列表中。用户将从列表中 select 哪些文件将被处理,然后点击 "starts the commotion," 按钮。
现在,我制作了一个名为 DrawingFile 的 class,看起来像:
class DrawingFile {
private static String fileName, fileType;
private static boolean actionable;
private static Path filePath;
public DrawingFile (Path path){
setFilePath(path);
setFileName(stripExtension(path));
setFileType(getExtension(path));
setActionable(true);
}
...(methods omitted to save time)...
我的计划最初是创建一个基于 DrawingFiles 列表填充的 JTable,其中对象中的每个字段都是 table 中的一列,但不会显示的路径除外在 table 上。从那里,用户将单击一个复选框,该复选框将决定是否要对文件进行操作。
我的问题首先源于我对编程还比较陌生。这是我编写的第一个人们将要使用的程序,它也有任何类型的 UI.
因此我的问题是:
- 我的上述计划是否有意义?
- 将 table 排除在外并在容器内创建一系列 JPanel 是否更有意义? (这似乎不是最佳做法)
- 如果我选择 table,我是否应该废弃 DrawingFile class 并将数据存储在 TableModel 中? 3a.如果是这样,有没有办法可以隐藏 table 中的路径?
actionable
布尔值在 table 上(未)选中时如何更改它?- 在 1-10 的范围内,我对这个问题的思考有多严重?
- 如果我没理解错的话,您有一个 DrawingFile 对象列表,并希望将此列表显示为 JTable,其中每一行代表列表的一个对象。是的,这很有道理。
- 没有。 table 非常适合。
- 没有。您应该创建一个自定义 DrawingFileTableModel class,扩展 AsbtractTableModel,并使用对象列表作为源来实现该方法。 Google 对应 "Java tutorial JTable",您将在 the official tutorial 中找到示例。
- 通过确保
isCellEditable()
return 对于该列和行为真,并正确实施setValueAt()
和getColumnClass()
方法。 javadoc 和教程是您的朋友。setValueAt()
,当使用布尔列的索引调用时,应在存储在后备列表中给定行索引处的 DrawingFile 中设置其新值。getColumnClass()
,当用布尔列的索引调用时,应该returnBoolean.class
.