组件在JPanel和JFrame中被压扁

时间:2015-05-02 23:58:04

标签: java swing jpanel null-layout-manager

我正在尝试为用户创建一个GUI窗口,以便为我的程序输入一些信息。但似乎无论我如何改变尺寸或位置,我的所有组件都被压缩得比我想要的要小得多。有人可以指出我错过了什么吗? 这是我试过的:

          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);

1 个答案:

答案 0 :(得分:2)

JPanel的默认布局管理器是FlowLayoutFlowLayout将以首选大小显示组件,这是组件的显示方式。

您不应该尝试为组件提供随机大小,因为您不知道组件的最佳大小应该基于Font,OS等。

创建JTextField时,您可以使用:

JTextField textField = new JTextField(10);

值10将允许文本字段为自己提供合理的首选大小。

JLabel和JButton大小将由组件的文本决定。