如何更改 Java 中面板的大小?

How can I change the size of a Panel in Java?

我正在尝试创建一个由不同面板组成的简单登录屏幕。我需要有关调整面板大小的帮助。我要调整大小的面板是绿色的。我想让它小一点。绿色面板是北面板,设置为边框布局。我想把绿色面板变小,因为我觉得它太大了

我尝试了 northPanel.setSize(150,150); 但没有结果

这是我的代码:

JLabel lblWelcome = new JLabel("Welcome To The Login Screen", SwingConstants.CENTER);
JPanel northPanel = new JPanel(new BorderLayout());
northPanel.setBackground(Color.green);
northPanel.add(lblWelcome, BorderLayout.CENTER);

您正在使用 BorderLayout,它有五个位置用于在布局中放置组件。五个位置是 PAGE_START、PAGE_END、LINE_START、LINE_END 和 CENTER。这是这些职位的图表:

对于此布局,您希望将应该占据框架剩余 space 的组件放在中心位置。出于这个原因,northPanel 可能更适合放在 PAGE_START 位置,而包含登录标签和提交按钮的 JPanel 应该放在中心位置。使用此定位将允许您调整 northPanel 的大小并允许包含登录标签和提交按钮的面板占用剩余的框架 space.

I want to make the green panel smaller

在我看来,这两个面板的尺寸相同,这表明您正在使用 GridLayout 作为框架。

不要使用 GridLayout,而是保留框架的默认 BorderLayout。

那么您的代码将类似于:

JLabel lblWelcome = new JLabel("Welcome To The Login Screen", SwingConstants.CENTER);
JPanel northPanel = new JPanel(new BorderLayout());
northPanel.setBackground(Color.green);
northPanel.add(lblWelcome, BorderLayout.CENTER);

frame.add(northPanel, BorderLayout.PAGE_START);
frame.add(centerPanel, BorderLayout.CENTER);

现在绿色面板将仅与 JLabel 一样大。如果你想让面板更大,那么在northPanel中添加一个EmptyBorder。阅读 How to Use Borders 上的 Swing 教程部分了解更多信息。