【问题标题】:Scaling and zoom缩放和缩放
【发布时间】:2011-10-31 17:39:13
【问题描述】:

我需要为 JScrollPane 中包含的 JDesktopPane 实现缩放。我之前通过覆盖paintComponent(...) 方法并调用scale(double,double) 来成功缩放。

这不能正常工作:JInternalFrame's 和 JPanel's 按预期缩放,但 MouseListener's 用于 JLabel's 和此类寄存器在预缩放位置。我能做些什么?感谢您的阅读。

【问题讨论】:

  • 你不能也缩放鼠标坐标吗?
  • 对于带有 mouseListener 的 jlabel,mouseEntered()、mouseExited()、...其所有方法都在未缩放的位置注册。像 mouseEvent.getX()/scaleFactor 那样做一些鼠标坐标缩放不会解决这个问题。

标签: java swing jpanel jinternalframe jdesktoppane


【解决方案1】:

ScaledPanel 展示了如何使用显式转换方法缩放鼠标坐标:scaleXscaleYunScaleXunScaleY。或者,您可以使用逆变换,如here 所示。

【讨论】:

  • 我已经知道如何缩放鼠标坐标,这不是问题。不过还是谢谢。
  • 啊,我现在明白了:您将观看mouseMoved() 并缩放坐标以确定您自己的mouseEntered()
  • 屏幕上有很多移动的部分,我希望我不必求助于“碰撞检测”。不过好吧,可能没有更好的办法了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2015-04-27
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2013-07-11
相关资源
最近更新 更多