是否有任何方法我想要缩放视口的视图但是 内部组件的位置不会改变。设置是我有一个大的jpanel 在jscrollpane中,我只想将视图更改为缩放模式。该 对象可以在面板内的任何位置拖放,这就是为什么xy位置保持不变的重要原因。
这是我目前的缩放代码,我所做的是使用图形2d比例缩放视图。问题是这个位置很乱。我也想缩小它,以便整个面板适合jscrollpane。
//zoom in draw method using scale
g2.translate(zoomX, zoomY);
g2.scale(zoomScale, zoomScale);
g2.translate(-zoomX, -zoomY);
我还在考虑操纵视口。这是我的视口初始化。 2000 x 1000维度是面板,750 x 698是我的视口的范围。关于如何在不弄乱组件位置的情况下进行缩放的任何建议? 也许移动setviewposition是解决方案的一部分?
view = new JViewport();
view.setViewSize(new Dimension(2000,1000));
view.setExtentSize(new Dimension(750,698));
view.setViewPosition(new Point(view.getExtentSize().width/2,view.getExtentSize().height/2));
答案 0 :(得分:0)
使用两个增加/减少缩放系数的按钮。像这样覆盖JScrollPane中面板的paintComponent
方法。
@Override
public void paintComponent(Graphics g)
{
g.scale(zoomFactor, zoomFactor);
// Change the size of the panel
setSize(origWidth * zoomFactor, origHeight * zoomFactor);
// Re-Layout the panel
validate();
super.paintComponent(g);
}
希望它有效。