java - 在面板内放大和缩小

标签 java swing panel

我有一个面板,其中有一些二维对象在移动。我已经根据需要覆盖了 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/

相关文章:

java - 无法在 Azure 门户进行身份验证

c# - 滚动面板时在 winform 面板中绘制按钮

java - 在设置布局之外添加元素(即 JLabels)

java - 如何从 jTextField 中检索信息

java - 鼠标滑过 JLabel 时不显示文本

jquery - 如何使元素的定位固定,但仍然滑入/滑出?

css - 使用没有盒装外观的 firefox-addon SDK 面板模块

java - 如何检查数据库表中的多个shiro权限?

java - eclipse vm 参数中使用的字符编码是什么?

java - 如何将 Java 属性序列化为 JSON