java - JTable 及其与数据源的关系

标签 java swing user-interface jtable jpanel

我正在构建一个程序,该程序收集与一组特定条件匹配的几个文件列表,并根据源、文件类型等适本地操作它们...我希望它能找到文件并将它们显示在易于阅读的列表中。用户将从列表中选择要处理的文件,然后点击“开始骚动”按钮。

现在,我创建了一个名为 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)...

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

我的问题首先是因为我对编程还比较陌生。这是我编写的第一个供人们使用的程序,它也有任何类型的 UI。

因此我的问题是:

  1. 我的上述计划有任何意义吗?
  2. 将表格排除在外并在容器内创建一系列 JPanel 会更有意义吗? (这似乎不是最佳实践)
  3. 如果我确实使用表格,我是否应该废弃 DrawingFile 类并将数据存储在 TableModel 中? 3a.如果是这样,有没有办法隐藏表中的路径?
  4. 当表上的 actionable boolean 值被选中(未选中)时,我该如何更改它?
  5. 从 1 到 10 分,我想得有多严重?

最佳答案

  1. 如果我理解正确的话,您有一个 DrawingFile 对象列表,并希望将此列表显示为 JTable,其中每一行代表该列表的一个对象。是的,这很有道理。
  2. 没有。 table 是完美的选择。
  3. 没有。您应该创建一个自定义的 DrawingFileTableModel 类,扩展 AsbtractTableModel,并使用对象列表作为实现该方法的源。 Google 搜索“Java 教程 JTable”,您将在 the official tutorial 中找到一个示例。 .
  4. 确保 isCellEditable() 对于该列和行返回 true,并实现 setValueAt()getColumnClass()方法正确。 javadoc 和教程是您的 friend 。 setValueAt(),当使用 boolean 列的索引调用时,应在存储在后备列表中给定行索引处的 DrawingFile 中设置其新值。当使用 boolean 列的索引调用 getColumnClass() 时,应返回 Boolean.class

关于java - JTable 及其与数据源的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493110/

相关文章:

java - 将 JMenuItem 添加到已经可见的 JMenu

java - TransferHandler.canImport(TransferSupport) 在 Windows 上被重复调用,但在 Linux/Mac 上却没有被重复调用?

java - 添加 JComboBox 中键入的文本作为此 JComboBox 中的对象

android - 如何在 editText 中启用覆盖模式

c# - 如何指示单行 C# winforms 文本框中有更多文本?

java - java 中 tiff 图像的平铺?或 libTiff 的 java 包装器?

java - Android:从 Fragment 到 Activity 的 Intent 不起作用

java - JInternalFrame 置于前面并聚焦

java - 使用 LWJGL 在 Java 中光线转换透明 PNG

java - 在远程主机上没有root权限的情况下使用jenkins重启Jboss eap