2011-08-21 87 views
4

我正在做一个关于java的UML类图工具的个人项目,并在一些设计/编程问题中运行。设计UML类图工具

首先是类图框。我想如果我建立自己的组件来表示它,但是当它在面板上绘制时,使用鼠标移动将会很尴尬。因为所有的java布局管理器都不会让我把这个盒子放在任何地方。

或者如果我选择在面板上绘制我的组件作为矩形框,那么它将是最简单的实现,但我不能用鼠标移动它。

任何提示或指示我该如何继续?

回答

2

我想如果我建立自己的组件来表示它,但是当它在面板上绘制时,使用鼠标移动会很尴尬。 因为java中的所有布局管理器都不会让我把任何地方的方框放在任何地方。

如果你需要绝对定位的组件,你必须可能性:

  1. 使用空布局管理器(坏的解决方案,但在某些有限的情况下,你可以节省一些时间)
  2. 实现你自己的布局管理器

或者,如果我选择我的画组件作为一个矩形框面板上 那么这将是最简单的实现,但我不能用鼠标移动 。

没错。如果您需要鼠标交互,最好使用Component而不是绘制矩形。

+0

我实际上阅读了关于创建自定义布局管理器的Oracle教程,它似乎很短。我喜欢通过点击菜单面板上的一个按钮在面板上放置一个新的教室框,并在面板上点击鼠标(任何地方),框将会在那里。之后,我可以用鼠标移动它。实现我自己的布局管理器似乎更具吸引力。 – bili

+0

@bill:阅读该教程。如果您实现布局管理器,则可以自由地允许组件的绝对定位,并且同时将鼠标监听器连接到每个显示的组件。 – Heisenbug

+0

+1,使用组件是最简单的方法。 – camickr

1

不幸的是Java Swing没有Canvas类,这对于这个问题来说很理想。但是,this question and its answers演示了如何使用JPanel实现画布式行为。您将在JPanel上手动绘制框,就像它是一个画布。

要在面板上移动框,您可以捕获JPanel上的鼠标事件并自己处理它们。

+0

我认为他想过绘制矩形只是因为他认为由于布局管理器而无法自由移动组件。从我的角度来看,使用类似画布的组件并不是一个好主意,因为您无法在绘制的矩形上添加鼠标侦听器。 – Heisenbug

+0

你是什么意思Swing没有“Canvas class”? Canvas没有内置任何特殊功能。你需要自己添加所有的功能。这正是您使用JComponent或JPanel所要做的。 – camickr

+0

是的,0verbose是绝对正确的。这是我无法继续绘制矩形的原因。 – bili

3

也可以考虑JGraph,它作为几个图表工具的基础。

2

另一个图形可视化工具是JUNG framework:带有有用的动态“布局管理器”,可以很容易地扩展。 Plus具有丰富的用户(通过鼠标)与可插拔扩展设计的默认交互。

0

我发现这个教程在这里Resizable component,这正是我需要的!该面板根本不使用任何布局管理器!所以现在我正在玩一些代码,并重新组织它来适应类图。

接下来的事情将会实现观察者模式,以便在面板中移动时箭头将获得盒子的更新位置。

+0

嗨,欢迎来到stackoverflow,很高兴你找到了你正在寻找的答案。这是一个问答网站 - 我们通常使用评论和投票以及“接受”功能来表示感谢您的良好答案,而不是更多答案。我编辑了您的答案,以删除您在其中写下的感谢。您可以使用上述方法之一来感谢您发现有帮助的答案。 – Flexo

+0

谢谢!我会熟悉网站规则。 – bili