我的应用程序富含JPanels和其他显示内容的Swing组件。我希望这些JComponents的尺寸与屏幕尺寸无关,例如我的GUI可以在不同的分辨率下使用。我想在我的代码中做这样的事情
public class myPanel extends JPanel {
//constructors and other useful methods
@Override
public Dimension getPreferredSize() {
Dimension screen_size=Toolkit.getDefaultToolkit().getScreenSize();
return new Dimension (0.50*screen_size.width, 0.30*screen_size.height); }
简而言之,以屏幕大小的百分比为JPanel提供维度。这样好吗?有没有快速的方法?因为我应该为我使用的每个JComponent做到这一点。我该怎么办? PS:我们假设我使用符合首选大小的Manager Layouts。
答案 0 :(得分:0)
布局GridBagLayout
允许您将尺寸指定为列的权重。如果您这样做并指定所有组件来填充其网格单元格,那么您将获得所需的行为。
例如3个组件:
weightx 2, weightx 1, weightx 1
然后第一个组件将始终使用50%的窗口,接下来的两个窗口各占25%。当您调整窗口大小时,这也将自动调整大小,而不仅仅是显示器。
您应该知道,控件中的文本之类的内容不会随控件自动调整大小。
请参阅:https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html