JPanel不会显示JTextField

时间:2016-05-04 08:55:55

标签: java swing user-interface jpanel jtextfield

我正在尝试为简单程序制作GUI。我只想要一个文本字段,以便用户可以输入一些文本,但JTextField将不会显示在我的JPanel中,即使我的按钮和标签都没有问题。任何有关如何解决这个问题的帮助非常感谢。这是我的代码。

public static void main(String[] args) {



    JFrame frame = new JFrame("David's cube program!");
      frame.setVisible(true);
      frame.setSize(800,350); // i used some code from 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setResizable(false);


      frame.add(panel1);
      panel1.setLayout(null);

      JButton button = new JButton("Click to display moves");
      panel1.add(button);
      button.setLocation(150, 20);
      button.setSize(200,50);
      button.addActionListener (new Button1Action()); 

      JLabel textArea = new JLabel("Click the button to run moves!"); 
      panel1.add(textArea);
      textArea.setLocation(15, 40);
      textArea.setSize(600, 100);

      textBox = new JTextField(20);
      textBox.setFont(textBox.getFont().deriveFont(20f));
      textBox.setLocation(15, 180);
      textBox.addActionListener (new TextAction() );
      textBox.setVisible(true);
      panel1.add(textBox);

      JButton button2 = new JButton("Click to change file path");
      panel1.add(button2);
      button2.setLocation(150, 160);
      button2.setSize(200,50);
      button2.addActionListener (new Button2Action()); 

      JLabel textArea2 = new JLabel("the textfield should be just above me"); 
      panel1.add(textArea2);
      textArea2.setLocation(15, 200);
      textArea2.setSize(600, 100);

}

3 个答案:

答案 0 :(得分:0)

frame.add(panel1)移至main的末尾,就在#frame; setVisible(true)'之前。因此,main的最后一个线索变为:

textArea2.setSize(600, 100);
frame.add(panel1);
frame.setVisible(true)

答案 1 :(得分:0)

我将frame.setVisible(true)作为最后一行,textBox.setSize(100, 50);添加textBox变量,这解决了问题。

答案 2 :(得分:0)

  • 当您使用绝对布局时,有必要提及UI组件的大小和位置。
  • 框架应仅在最后显示。
  • 不建议使用绝对布局。尝试使用其他布局,例如 GridBagLayout BorderLayout GridLayout CardLayout 等等。