gpt4 book ai didi

java - 如何将 JPanel 高度设置为自动

转载 作者:行者123 更新时间:2023-12-02 01:09:20 25 4
gpt4 key购买 nike

我不使用 GUI 编辑器手动创建布局,我需要将高度设置为自动,以便整个表单对用户可见。我将 GridLayout 包装到 FlowLayout 中,因此输入不会拉伸(stretch)。创建这样的布局的最佳实践是什么?有人可以修改它,使整个表单可见或使用 GridLayout 但可以设置表单中输入的宽度和高度吗?

package helpdesk;

import java.awt.*;
import javax.swing.*;

/**
*
* @author Joko Wandiro
*/
public class Layout extends Base {

JPanel panel_form_edit = new JPanel();
FlowLayout layout_form_edit_outer = new FlowLayout(FlowLayout.LEFT);
JPanel panel_form_edit_outer = new JPanel();
// Form - Edit
JLabel label_name_update = new JLabel("Name", JLabel.LEFT);
JTextField input_id_update = new JTextField();
JTextField input_name_update = new JTextField();
JButton btn_update = new JButton("Update");

public Layout() {
setLookAndFeel();
setExtendedState(JFrame.MAXIMIZED_BOTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Main Layout
GridLayout layout = new GridLayout(5, 1, 10, 10);
setLayout(layout);
// Form - Edit
label_name_update.setPreferredSize(new Dimension(400, 20));
input_name_update.setPreferredSize(new Dimension(400, 20));
input_id_update.setVisible(false);
GridLayout layout_form_edit = new GridLayout(4, 1, 10, 10);
panel_form_edit.setLayout(layout_form_edit);
panel_form_edit.add(input_id_update);
panel_form_edit.add(label_name_update);
panel_form_edit.add(input_name_update);
panel_form_edit.add(btn_update);
panel_form_edit_outer.setLayout(layout_form_edit_outer);
panel_form_edit_outer.add(panel_form_edit);
add(panel_form_edit_outer);
panel_form_edit.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
panel_form_edit_outer.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
setVisible(true);
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Layout app = new Layout();
}

private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
// ignore error
}
}

}

未设置首选尺寸和包装方法

Without set preferred size with pack method

使用打包方法设置首选尺寸

Set preferred size with pack method

将扩展状态设置为最大化,但更新按钮不完全可见。如何设置 JPanel 的高度以使表单完全可见?

Set extended state to maximize

我希望 JFrame 在最大化屏幕中显示。

非常感谢。

最佳答案

I need to set height to auto so the entire form visible to user.

您使用:

pack();
setVisible(true);

pack() 方法将使框架成为添加到框架中的所有组件的首选大小。

label_name_update.setPreferredSize(new Dimension(400, 20));
input_name_update.setPreferredSize(new Dimension(400, 20));

不要使用 setPreferredSize(...)。每个 Swing 组件都会根据文本、字体等确定自己的首选大小。

编辑:

GridLayout layout_form_edit = new GridLayout(5, 1, 10, 10);

上面的行似乎导致了问题。您指定了 5 行,但我猜框架上没有足够的空间容纳 5 行。

尝试:

GridLayout layout_form_edit = new GridLayout(0, 1, 10, 10);

关于java - 如何将 JPanel 高度设置为自动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57705260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com