我正在寻找放大 Java Swing 应用程序的方法。这意味着我想通过给定因子调整给定 JPanel 中所有组件的大小,就像我会截取 UI 并应用“图像缩放”操作一样。必须调整字体大小以及复选框、文本框、光标等的大小。可以通过对图形对象应用变换来缩放组件:
protected Graphics getComponentGraphics(Graphics g) {
Graphics2D g2d=(Graphics2D)g;
g2d.scale(2, 2);
return super.getComponentGraphics(g2d);
}
只要您不关心自更新组件,它就可以工作。如果您的应用程序中有一个文本框,则此方法将停止工作,因为文本框每秒都会自我更新以显示(闪烁的)光标。并且由于这次它不使用修改后的图形对象,因此组件出现在旧位置。是否有可能永久更改组件图形对象?鼠标单击事件处理程序也存在问题。另一种可能性是将 JPanel (setPreferredSize) 的所有子组件调整为新大小。这不适用于复选框,因为复选框的显示图片不会改变其大小。我也想过编写自己的布局管理器,但我没有 t 认为这将起作用,因为布局管理器仅更改对象的位置(和大小),但无法放大复选框(请参阅上一段)。还是我对这个假设有误?你有什么想法如何在不编写自定义组件的情况下实现可缩放的 Swing GUI?我寻找可旋转的用户界面,因为这个问题看起来很熟悉,但我也没有找到任何令人满意的解决方案。
谢谢你的帮助,克里斯