【发布时间】:2012-11-12 06:44:34
【问题描述】:
在 .NET 中,UserControl 可能由 Controls 组成,它可能是 Form 的一部分或更大的 UserControl 的一部分。可以使用工具箱调色板通过可视化设计器设计用户控件。
我发现 java BeanForm 是 .NET UserControl 的类比。
我可以在 NetBeans 中使用可视化设计器设计 BeanForm
在我的库中,我可以从任何其他库中扩展 BeanForm,并且可以使用 NetBeans 中的可视化设计器设计扩展的 BeanForm。
- 在我的主项目中,我可以将 Palette 中的所有 BeanForm 选择到我的框架中。
所以“BeanForm”是“UserControl”的java挂件。
在 .Net 中,我可以轻松地将我的 UserControl 塑造成鱼或星形或任何我喜欢的形状 只需设置 this.Region = new Region(graphicsPath)。
我知道 Java 不像 C# 那样简单,我发现 Java 示例部分描述了必要的步骤,但是 我没有找到 Shaped non-rectangular 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 或任何必要的。
请指点我该怎么做!
非常感谢。
【问题讨论】:
-
任何组件都是矩形的。话虽如此,您可以使用不透明度来更改可点击/可见的区域。您还可以影响剪辑形状(但我会非常小心)或者您可以更改其自身的顶级容器的形状。另一个问题是,您希望子组件“适合”形状还是应该剪裁它们?
-
好吧,MadProgrammer,你是对的,我应该澄清一下:在 C# 和 Java 中,每个控制组件在幕后都是矩形的!为了表现得像一个非矩形控件组件,一些区域必须是透明的,而且这些区域不得对鼠标事件和/或拖放事件做出反应。可以在 C# 中用 1 行代码实现这种“非矩形”行为,但在 java 中到目前为止还没有解决方案。现在我不关心“内部组件”(我不打算拥有“内部控件”)如果有“形状控制问题”的解决方案我会很高兴。你的,杰拉德
标签: java swing netbeans components controls