动态JTable UI问题

时间:2012-08-21 23:06:08

标签: java swing jtable

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

enter image description here

其中“+”和“ - ”表示添加或删除关联行或列的按钮。要确保按钮与现有行和列很好地对齐,最好将表扩展到数据部分之外,以包含按钮。因此,上表将有5行6列。

问题:

  1. 我可以在JTable的列标题上方放置按钮吗?
  2. 我的理解是我无法删除单元格级别的按钮和空白单元格(请参阅here)的单元格边框。那么,有没有其他方法使按钮与列或行对齐?
  3. 您看到或使用的类似UI样式是否允许所需的行为?任何图书馆?我知道这可以通过例如用于选择要删除的特定行或列的组合框来实现。但是,我更喜欢样式,其中添加/删除行/列的选项紧邻行/列放置。
  4. 感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

简短的答案是(大多数情况下)是,答案很长,这有点工作。

我会利用JScrollPane的行标题,有关详细信息,请参阅setRowHeader

enter image description here

(从JavaDocs使用的图片)

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

表标题稍微复杂一些,并归结为这是否是自定义表实现。

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

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

您需要一个可以使用JTableHeader的组件,并为您提供布局所需组件的方法。我会在BorderLayout位置使用JTableHeader,在South位置使用控件{/ 1}}

IMHO

答案 1 :(得分:2)

如果您对其他用户界面开放:来自JXTable项目的SwingX有一个允许隐藏某些列的UI,或者之后将其恢复。这当然只有在您只想隐藏/显示现有列时才有用。如果您想添加全新的列,我担心SwingX用户界面还不够。

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