2
  • 在 .NET 中,UserControl可能由 Controls 组成,它可能是 Form 的一部分或更大的 UserControl 的一部分。可以使用工具箱调色板通过可视化设计器设计用户控件。

  • 我发现 java BeanForm是 .NET UserControl 的类比。

  • 我可以在 NetBeans 中使用可视化设计器设计 BeanForm

  • 在我的库中,我可以从任何其他库扩展 BeanForm,并且可以使用 NetBeans 中的可视设计器设计扩展的 BeanForm。

  • 在我的主要项目中,我可以从Palette中选择我所有的 BeanForms到我的框架上。

所以“BeanForm”是“UserControl”的java挂件。


在 .Net 中,我可以通过简单地设置 this.Region = new Region(graphicsPath) 轻松地将我的 UserControl 塑造成 Fish 或 Star 或任何我喜欢的形状。


我知道 Java 不如 C# 简单,并且我找到了部分描述必要步骤的 Java 示例,但我没有找到Shaped 非矩形 BeanForm示例。


当然,使用新的特殊 mouseClicked(MouseEvent e) 扩展 MouseAdapter——正如许多示例所建议的那样——还不够——这只是第一步。

  • 他们是否都忘记了 Dragged-Event 和 Focus 事件以及 Mouse-Entered 事件和 Mouse-Up 事件和 Mouse-Leave 事件以及所有其他典型的 JComponent 事件?- 这样的组件肯定不会像真正的 Shaped JComponent 那样表现。

请给我一个 OvalComponent-BeanForm 的示例,它可以从 Palette 中取出到我的框架上,它的行为就像一个REAL Shaped JComponent

它应该涵盖所有必要的鼠标事件和所有必要的 MouseMotion 事件以及所有拖放事件和所有键事件,以防椭圆形具有焦点或鼠标位于椭圆形上方。

(例如,我应该能够使用 Oval 的鼠标事件并将 Oval 组件扩展为可以在框架内移动的 MovingOval 组件......)


如果这对您来说工作量太大,请概述并描述我必须实施的步骤 - 例如 MouseAdapter、KeyAdapter、可能是 DragDropAdapter 或任何必要的。

请指出我该怎么做!

提前谢谢了。

4

2 回答 2

1

每个java.awt.Shape人都有一种contains()方法,可用于在您的MouseListenerMouseadapter.

于 2012-11-26T13:33:57.067 回答
0

好的,到目前为止没有人回答。我想换一种说法。


假设我们有 2 个方形 CirclePanel(扩展 JPanel),大小为 100x100 像素,每个形状都形成一个圆圈,这 2 个组件显示一个红色圆圈和一个蓝色圆圈。让我们假设 CirclePanel 在彩色圆圈之外的区域是透明的。让我们进一步假设托管框架具有 Null-Layout - 所以红色圆圈部分重叠蓝色圆圈。

为了使这些圆圈表现得像真正的控件,我们必须至少解决以下问题:

1.) 在圆圈外但非常靠近圆圈边界的 MouseClick 只能触发框架的 MouseListener - 它不能触发 JPanel 的 MouseListener。

2.) 红色区域内的 MouseClick 只能触发红色 JPanel 的 MouseListener - 它不能触发蓝色 JPanel 的 MouseListener 并且它不能触发框架的 MouseListener。

3.) 蓝色区域内的 MouseClick 只能触发蓝色 JPanel 的 MouseListener - 它不能触发红色 JPanel 的 MouseListener 并且它不能触发框架的 MouseListener。

4.) 实现这一切所需的源代码必须在 CirclePanel.java 文件中,并且框架的 java 不能关心这些问题。这是因为这些形状的控件必须在任何框架中起作用。

这以不同的方式描述了需求。

任何人都可以,请现在指出我,如何在java中完成它。你的,杰拉德

于 2012-11-25T01:54:13.577 回答