2013-02-22 64 views
2

我已经搜索了这个问题,但并未真正找到明确的,有用的答案。我正在构建我的第一个Java UI应用程序(使用Swing),我想知道一件事情:我如何强制调整窗口大小来缩放?对于我即将到来的计划来说,这在美学上非常重要。任何人都可以帮助我吗?谢谢!而且,伙计们,我并不是要求'给我一个解决方案',我知道你们讨厌这个问题,我只是需要有人帮助我达成目标!在Swing窗口中强制固定的宽高比

  1. 这是一个小的博格游戏。我有一个带有JButton实例的网格来模拟Boggle的骰子(需要点击这些骰子来形成单词),当我调整窗口大小时,我希望骰子保持方形,它们变成矩形,这实际上并不是这样。 。
+0

“我怎么能强迫窗口的大小调整发生的比例?” ......我不知道你问什么在这里。如果用户调整大小,是否要保持帧的宽高比? – splungebob 2013-02-22 16:16:12

+0

@splungebob就是这样呀!宽高比应该保持不变;) – 2013-02-22 16:17:58

回答

2

你可以听你的窗口组件的改变大小事件,并在宽度改变设置所需的缩放高度。

addComponentListener(new ComponentAdapter() { 
    public void componentResized(ComponentEvent e) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
     // TODO: calculate new size and set it 
     } 
    }); 
    } 
}); 

但是,你将不得不调整,如避免闪烁。

+0

我该如何避免闪烁? – 2013-03-01 10:46:32

2

您可能可以修改JDigit(见here)中显示的方法,该方法重新采样较大的BufferedImage以填充组件;调整框架大小以查看效果。通过将widthheight设置为相同的值:Math.min(width, height),可以实施1:1宽高比。相关示例显示here

image