JTable及其与数据源的关系

时间:2016-11-08 17:34:13

标签: java swing user-interface jtable jpanel

我正在构建一个程序,它收集几个符合特定标准的文件列表,并根据文件的来源,文件类型等操作它们......我希望它会找到文件并将其显示在易于阅读的列表中。用户将从列表中选择要处理的文件,然后点击“#34;开始骚动”的按钮,"如果你愿意的话。

现在,我已经创建了一个名为DrawingFile的类,如下所示:

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

我的计划,最初是创建一个基于ListFiles列表填充的JTable,对象中的每个字段都是表中的一列,除了Path,它不会显示在表上。从那里,用户将单击一个复选框,该复选框将确定是否要操作文件。

我的问题首先源于我对编程的相对较新。这是我写的第一个人们将要使用的程序,它也有任何类型的UI。

因此我的问题是:

  1. 我的上述计划是否有任何意义?
  2. 将表格从表格中删除并在容器内创建一系列JPanel会更有意义吗? (这似乎不是最好的做法)
  3. 如果我选择表格,我应该废弃DrawingFile类并将数据存储在TableModel中吗? 3A。如果是这样,有没有办法可以隐藏表中的路径?
  4. 如果在桌子上(联合国)检查了actionable布尔值,我该如何更改?{/ li>
  5. 在1-10的范围内,我有多么过分思考这个?

1 个答案:

答案 0 :(得分:1)

  1. 如果我理解正确,您有一个DrawingFile对象列表,并希望将此列表显示为JTable,其中每一行代表列表的一个对象。是的,这很有道理。
  2. 否。桌子非常适合。
  3. 否。您应该创建一个自定义DrawingFileTableModel类,扩展AsbtractTableModel,并使用对象列表作为源来实现该方法。谷歌的“Java教程JTable”,你会在the official tutorial中找到一个例子。
  4. 确保isCellEditable()为该列和行返回true,并正确实施setValueAt()getColumnClass()方法。 javadoc和教程是你的朋友。 setValueAt(),当使用布尔列的索引调用时,应在支持列表中给定行索引处存储的DrawingFile中设置其新值。 getColumnClass(),当使用布尔列的索引调用时,应返回Boolean.class