【问题标题】:Disable full window drag禁用全窗口拖动
【发布时间】:2011-03-11 11:32:48
【问题描述】:

当我使用AWTUtilities.setWindowOpaque(this, false); 使我的JFrame 的背景透明时,您可以通过将它拖动到窗口中的任意位置来更改我的JFrame 的位置。我的问题是,我有要用于在此框架上拖放的对象,但是当我尝试拖动对象时 JFrame 移动时,它不可能将其拖放到其他任何地方。 有什么办法可以解决这个问题吗?

顺便说一句,我在使用 Mac OS 10.6.6 的 Mac 上

感谢您的帮助!

【问题讨论】:

  • "有什么办法可以解决这个问题吗?"究竟是什么问题?
  • 我在这个 JFrame 上有可拖动的对象。但是当我尝试拖动这些对象时 JFrames 移动时,不可能将这些对象放到其他任何地方

标签: java macos transparency drag


【解决方案1】:

对不起,我的英语不好。 试试这个:

setUndecorated(true); 
AWTUtilities.setWindowOpaque(this, false); 
getRootPane().putClientProperty("apple.awt.draggableWindowBackground", Boolean.FALSE); 

默认情况下,setWindowOpaque 函数将此客户端属性设置为 true。但是这个客户端属性使窗口中的每个组件都可以拖动。

现在你必须自己制作拖动代码了。

【讨论】:

  • 为什么是Boolean.FALSE 而不是false
【解决方案2】:

您应该在 Windows 上进行测试,因为我认为这是 mac 功能。通常,您可以单击框架中的任意位置来拖动应用程序。您的目标部署平台是什么? 也许您可以在其中放置另一个面板并将其设置为非透明。也许这会有所帮助?

【讨论】:

  • 如果它是完全透明的(没有面板)你不能拖动它。但是当其中有一个面板(不完全透明)时,您可以拖动它。是的,这就是 mac 的“功能”/错误。
  • 希望这是一个 Mac 功能,因为我不知道如何让我的工具栏表现得像这样。
猜你喜欢
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2013-04-20
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多