【问题标题】:Adding a child component to a JButton将子组件添加到 JButton
【发布时间】:2009-08-16 01:23:42
【问题描述】:

是否可以在JButton 中放置一个子组件并使其对鼠标事件的子集透明,以便:

  • 子组件接收MouseMotionEvents(因此它可以通过修改显示的图像来响应)
  • 单击仍然会按下子组件“后面”的JButton

如果将子组件添加到按钮但未进行其他更改,则单击子组件占用的区域不会激活按钮。

我知道这可以通过创建一个扩展 JButton 的新类来实现,但我更喜欢使用已经编写好的子组件。

注意:这纯粹是出于美观的原因。子组件只会改变自己的外观。它不执行任何其他操作来响应点击。只有一个Action,由按钮以正常方式触发。

【问题讨论】:

    标签: java swing mouseevent jbutton


    【解决方案1】:

    是的,这是可能的,但可能有更好的方法来更改鼠标悬停时 JButton 的外观。您可以扩展一个 ButtonUI 来做到这一点。但是,如果您想将组件放在 JButton 上,您应该将其他鼠标事件(例如点击)传递给底层 JButton。

    【讨论】:

    • 我使用 SwingUtilities.convertMouseEvent 将不需要的事件传递给按钮,从而达到预期的效果。
    【解决方案2】:

    JXLayer 正是您所需要的。查看https://jxlayer.dev.java.net/ 该项目站点有几篇关于 JXLayer 在许多不同用例中的使用的好文章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-13
      • 2018-09-19
      • 2011-05-06
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多