[英]Zoom JPanel in Java Swing
我有一个现有的Java Swing
应用程序。 在应用程序的中间是一个JPanel
,我希望能够zoom in and out
。 JPanel
上有许多JComponents
(主要是其他JPanels
和JLabels
)。
此外mouse
位置需要进行适当的调整,以及-所以mouseevents
需要保持相同的偶数后JPanel
已被放大。 因此,简单地改变每个component
的paint
方法似乎不合理。
编辑:
好吧,我有点使用MagnifierUI
class
进行一些小编辑。 然而,放大板创建有错误的mouseevents
-即面板进行缩放, mouseevents
都没有。
这只是一个问题:
JPanel
密切跟踪的AffineTransform代表比例因子(见AffineTransform.scale(double,double)
, JPanel
的paint
方法:在调用super.paint
之前,通过调用Graphics2D.setTransform(AffineTransform)
将仿射变换应用于Graphics2D
对象(从paint
方法的参数super.paint
Graphics2D.setTransform(AffineTransform)
,然后调用super.paint
processMouseEvent
, processMouseMotionEvent
和processMouseWheelEvent
,将仿射变换应用于其鼠标事件参数的坐标( AffineTransform.transform(java.awt.geom.Point2D,java.awt.geom.Point2D)
),之后调用相应的super
方法。 希望这可以帮助。
试试SwingUtilities.convertPoint(source,point,destination);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.