组件在 JPanel 和 JFrame 中被压缩
Components get squished in JPanel and JFrame
我正在尝试创建一个 GUI window 供用户为我的程序输入一些信息。但似乎无论我如何更改大小或位置,我所有的组件都被压扁得比我想要的小得多。有人可以指出我所缺少的吗?
这是我尝试过的:
JFrame inputFrame = new JFrame();
JPanel panel = new JPanel();
inputFrame.setTitle("Create Event");
inputFrame.setSize(500,400);
JTextField eventName = new JTextField("Untitled event");
JTextField eventStart = new JTextField();
JTextField eventEnd = new JTextField();
JButton save = new JButton("Save");
JLabel selectedDate = new JLabel(MyCalendarTester.currentMonth + 1 + "/" + selectedDay + "/" + MyCalendarTester.currentYear);
selectedDay = null;
panel.setSize(450,300);
eventName.setBounds(10, 10, 600, 50);
panel.add(eventName);
selectedDate.setBounds(10, 20, 50, 20);
panel.add(selectedDate);
panel.add(eventStart);
eventStart.setBounds(100, 20, 50, 20);
panel.add(eventEnd);
eventEnd.setBounds(175, 20, 50, 20);
panel.add(save);
save.setBounds(250, 20, 60, 30);
inputFrame.add(panel);
inputFrame.setVisible(true);
JPanel 的默认布局管理器是 FlowLayout
。 FlowLayout
将以首选大小显示组件,这是组件应显示的方式。
您不应尝试给组件随机大小,因为您不知道组件的最佳大小应该基于字体、OS 等
创建 JTextField 时,您可以使用:
JTextField textField = new JTextField(10);
值 10 将允许文本字段给自己一个合理的首选大小。
JLabel 和 JButton 的大小将由组件的文本决定。
我正在尝试创建一个 GUI window 供用户为我的程序输入一些信息。但似乎无论我如何更改大小或位置,我所有的组件都被压扁得比我想要的小得多。有人可以指出我所缺少的吗? 这是我尝试过的:
JFrame inputFrame = new JFrame();
JPanel panel = new JPanel();
inputFrame.setTitle("Create Event");
inputFrame.setSize(500,400);
JTextField eventName = new JTextField("Untitled event");
JTextField eventStart = new JTextField();
JTextField eventEnd = new JTextField();
JButton save = new JButton("Save");
JLabel selectedDate = new JLabel(MyCalendarTester.currentMonth + 1 + "/" + selectedDay + "/" + MyCalendarTester.currentYear);
selectedDay = null;
panel.setSize(450,300);
eventName.setBounds(10, 10, 600, 50);
panel.add(eventName);
selectedDate.setBounds(10, 20, 50, 20);
panel.add(selectedDate);
panel.add(eventStart);
eventStart.setBounds(100, 20, 50, 20);
panel.add(eventEnd);
eventEnd.setBounds(175, 20, 50, 20);
panel.add(save);
save.setBounds(250, 20, 60, 30);
inputFrame.add(panel);
inputFrame.setVisible(true);
JPanel 的默认布局管理器是 FlowLayout
。 FlowLayout
将以首选大小显示组件,这是组件应显示的方式。
您不应尝试给组件随机大小,因为您不知道组件的最佳大小应该基于字体、OS 等
创建 JTextField 时,您可以使用:
JTextField textField = new JTextField(10);
值 10 将允许文本字段给自己一个合理的首选大小。
JLabel 和 JButton 的大小将由组件的文本决定。