我正在做一个关于java的UML类图工具的个人项目,并在一些设计/编程问题中运行。设计UML类图工具
首先是类图框。我想如果我建立自己的组件来表示它,但是当它在面板上绘制时,使用鼠标移动将会很尴尬。因为所有的java布局管理器都不会让我把这个盒子放在任何地方。
或者如果我选择在面板上绘制我的组件作为矩形框,那么它将是最简单的实现,但我不能用鼠标移动它。
任何提示或指示我该如何继续?
我正在做一个关于java的UML类图工具的个人项目,并在一些设计/编程问题中运行。设计UML类图工具
首先是类图框。我想如果我建立自己的组件来表示它,但是当它在面板上绘制时,使用鼠标移动将会很尴尬。因为所有的java布局管理器都不会让我把这个盒子放在任何地方。
或者如果我选择在面板上绘制我的组件作为矩形框,那么它将是最简单的实现,但我不能用鼠标移动它。
任何提示或指示我该如何继续?
我想如果我建立自己的组件来表示它,但是当它在面板上绘制时,使用鼠标移动会很尴尬。 因为java中的所有布局管理器都不会让我把任何地方的方框放在任何地方。
如果你需要绝对定位的组件,你必须可能性:
或者,如果我选择我的画组件作为一个矩形框面板上 那么这将是最简单的实现,但我不能用鼠标移动 。
没错。如果您需要鼠标交互,最好使用Component而不是绘制矩形。
不幸的是Java Swing没有Canvas类,这对于这个问题来说很理想。但是,this question and its answers演示了如何使用JPanel实现画布式行为。您将在JPanel上手动绘制框,就像它是一个画布。
要在面板上移动框,您可以捕获JPanel上的鼠标事件并自己处理它们。
Component Mover类可以帮助你拖动组件。
也可以考虑JGraph
,它作为几个图表工具的基础。
另一个图形可视化工具是JUNG framework:带有有用的动态“布局管理器”,可以很容易地扩展。 Plus具有丰富的用户(通过鼠标)与可插拔扩展设计的默认交互。
我发现这个教程在这里Resizable component,这正是我需要的!该面板根本不使用任何布局管理器!所以现在我正在玩一些代码,并重新组织它来适应类图。
接下来的事情将会实现观察者模式,以便在面板中移动时箭头将获得盒子的更新位置。
我实际上阅读了关于创建自定义布局管理器的Oracle教程,它似乎很短。我喜欢通过点击菜单面板上的一个按钮在面板上放置一个新的教室框,并在面板上点击鼠标(任何地方),框将会在那里。之后,我可以用鼠标移动它。实现我自己的布局管理器似乎更具吸引力。 – bili
@bill:阅读该教程。如果您实现布局管理器,则可以自由地允许组件的绝对定位,并且同时将鼠标监听器连接到每个显示的组件。 – Heisenbug
+1,使用组件是最简单的方法。 – camickr