JComponent大小独立于屏幕大小

时间:2015-05-26 07:49:52

标签: java swing dimension preferredsize

我的应用程序富含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。

1 个答案:

答案 0 :(得分:0)

布局GridBagLayout允许您将尺寸指定为列的权重。如果您这样做并指定所有组件来填充其网格单元格,那么您将获得所需的行为。

例如3个组件:

weightx 2, weightx 1, weightx 1

然后第一个组件将始终使用50%的窗口,接下来的两个窗口各占25%。当您调整窗口大小时,这也将自动调整大小,而不仅仅是显示器。

您应该知道,控件中的文本之类的内容不会随控件自动调整大小。

请参阅:https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html