我想创建一个数据库设计器,所以我可能还需要一种方法来让 UI 用于在两个表之间建立关系。工具:JAVA摇摆
1 回答
你的问题的简短回答是,不。没有现成的组件。你将不得不卷起自己,弄脏你的手。
分解你的问题。
您需要实体是可浮动的。您仅有的两个(体面)选择是JLayeredPane
和JDesktopPane
。您选择哪个取决于您要实现的功能。我可能会从JLayeredPane
. 这将允许您将组件放置在您想要的位置,并提供更轻松地控制 Z 水平的能力。
这样做的问题是,您不仅要负责定位组件,还要负责调整它们的大小。
接下来,您需要一个实体组件。
在我看来,这将是一系列复合组件。您需要一个“标题”或“标题”组件,它会提供表格的名称、展开控件以及可以拖动它的方法。
我会从一个简单的JPanel
. 我将在其上添加 a JLabel
、 aJTextField
和 a JButton
orJLabel
以充当扩展控件,具体取决于我所追求的外观。
将JLabel
作为标题的标题。JTextField
就像编辑一样。首先隐藏文本字段。稍微巧妙地使用布局管理器,您可以在空间位置放置两个组件。当文本字段可见时,它将能够覆盖标签。
您将需要为此组件添加鼠标侦听器和鼠标运动侦听器。单击时,应显示编辑器。使用ActionListener
andFocusListener
确定用户何时完成编辑并更新标签并隐藏编辑器。您可能还希望将 a 绑定Esc到该字段以允许用户取消编辑,键绑定最适合此操作。
您还需要跟踪鼠标拖动事件,以便重新定位“实体”
然后将此标头组件添加到实体组件中。
您将需要 aJList
或JTable
来保存字段信息。在我看来,aJTable
将提供最多的功能,让您更轻松地编辑字段信息。
您还需要执行一些自定义绘画以提供从一个表到另一个表的链接。这是一个非常重要的问题,需要您进行一些非常好的设计。
您需要开始的每一件事都可以在使用 JFC/Swing 创建 GUI中找到,但您还需要通读并理解执行自定义绘画和2D 图形