我不使用 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
}
}
}
未设置首选尺寸和包装方法
使用打包方法设置首选尺寸
将扩展状态设置为最大化,但更新按钮不完全可见。如何设置 JPanel 的高度以使表单完全可见?
我希望 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/