我有一个面板,其中有一些二维对象在移动。我已经根据需要覆盖了 paintComponent() 。现在我希望能够放大和缩小该区域。放大时会出现滚动条,滚动条可以查看整个区域。放大和缩小时,2D 对象的尺寸应相应增大或减小。哪个 Swing 组件或组件组合将有助于实现这一目标?
最佳答案
最简单的方法是修改您的面板并引入一个 double 指示您的缩放级别。这个 double 将指示您的比例,其中 1 是正常的,更高的是放大。您可以在 paintComponent
中将这个 double 与 Graphics2D
一起使用。
如:
Graphics2D g2 = (Graphics2D) g;
int w = // real width of canvas
int h = // real height of canvas
// Translate used to make sure scale is centered
g2.translate(w/2, h/2);
g2.scale(scale, scale);
g2.translate(-w/2, -h/2);
对于滚动,将面板放在 JScrollPane 中并将其与同样使用缩放比例的 getPreferredSize 组合。 JScrollPane 使用您放入其中的组件的首选大小。如果首选尺寸超过其自身尺寸,它将显示滚动条。
如果您更改面板的首选尺寸,使其返回的宽度和高度按比例缩放,您应该没问题。基本上你可以返回类似的东西:
return new Dimension(w * scale, h * scale)
关于java - 在面板内放大和缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6543453/