Java 组件在JPanel和JFrame中被压扁
我试图创建一个GUI窗口,让用户为我的程序输入一些信息。但无论我如何改变尺寸或位置,我所有的组件都被压得比我想要的小得多。有人能指出我遗漏了什么吗? 以下是我尝试过的:Java 组件在JPanel和JFrame中被压扁,java,swing,jpanel,null-layout-manager,Java,Swing,Jpanel,Null Layout Manager,我试图创建一个GUI窗口,让用户为我的程序输入一些信息。但无论我如何改变尺寸或位置,我所有的组件都被压得比我想要的小得多。有人能指出我遗漏了什么吗? 以下是我尝试过的: JFrame inputFrame = new JFrame(); JPanel panel = new JPanel(); inputFrame.setTitle("Create Event"); inputFrame.setSize(500,40
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
将以首选尺寸显示组件,这是组件的显示方式
您不应该尝试给组件一个随机大小,因为您不知道组件的最佳大小应该基于字体、操作系统等
创建JTextField时,可以使用:
JTextField textField = new JTextField(10);
值10将允许文本字段为自己提供合理的首选大小
JLabel和JButton的大小将由组件的文本决定。Hmm是否有一种布局可以让我仍然能够将组件放置在任何我想要的地方?您不想这样做。这不是设计GUI的方式。另外,请阅读上的Swing教程。每个布局管理器都有不同的规则来确定构件的大小/位置。您可以混合/匹配布局管理器以获得所需的布局。