0

我想创建一个具有类似于此的 UI 的 JTable:

在此处输入图像描述

其中“+”和“-”表示添加或删除相关行或列的按钮。为了确保按钮与现有的行和列很好地对齐,将表格扩展到数据部分之外以包括按钮似乎是最简单的。因此,上面的表格将有 5 行和 6 列。

问题:

  1. 我可以在 JTable 的列标题上方放置按钮吗?
  2. 我的理解是,我无法在单元格级别删除按钮和空白单元格(请参见此处)的单元格边框。那么,是否有其他方法可以使按钮与列或行对齐?
  3. 您是否见过或使用过允许所需行为的类似 UI 样式?有图书馆吗?我知道这可以通过例如用于选择要删除的特定行或列的组合框来完成。但是,我更喜欢将添加/删除行/列的选项放在行/列旁边的样式。

谢谢你的帮助。

4

2 回答 2

2

简短的回答是(大部分)是的,长的回答是有点工作。

我会利用JScrollPane的行标题,请参阅setRowHeader了解更多详细信息。

在此处输入图像描述

(图片来自JavaDocs)

这将要求您布局组件以匹配每行的高度。

表头有点复杂,归结为这是否是自定义表实现。

如果您打算扩展JTable(或其子组件),您应该考虑替换configureEnclosureScrollPane(和相应的unconfigureEnclosureScrollPane)方法的功能。这将允许您将其包装JTableHeader在自定义组件中并将其设置为滚动窗格的列标题位置。

如果没有,您将需要自己调整滚动窗格的列标题。无论哪种方式,基本方法都是相同的。

您需要一个组件,它可以使用JTableHeader并为您提供布局所需组件的方法。我会使用类似 aBorderLayout的位置和你JTableHeaderSouth控件North

恕我直言

于 2012-08-22T00:14:17.317 回答
2

如果您对替代 UI 持开放态度:项目中JXTableSwingX一个 UI 允许隐藏某些列,或者之后将它们带回来。这当然只有在您只想隐藏/显示现有列时才有用。如果要添加全新的栏目,恐怕SwingXUI不够用。

对于添加/删除行,我会考虑使用包含此类操作的弹出菜单。有点类似于 Microsoft Excel 提供的功能。那里也没有 + 或 - 号,但可以通过右键单击行号来找到这些操作。

于 2012-08-22T05:58:26.000 回答