添加JLabel和JButton

时间:2018-12-13 17:20:28

标签: java swing awt layout-manager

我正在尝试添加基本的JFrame,在其中添加JLabelJButtonJTextField。但是一次只有两件事出现。

我希望所有三个都出现在框架中。

import javax.swing.*;
import java.awt.*;

public class Main {
    JFrame f;
    JLabel l1;
    JButton b1;
    JTextField tf1;

    public Main(){
        f=new JFrame();
        l1=new JLabel("This is the new Label");
        l1.setBounds(10,20,50,30);
        b1=new JButton("Submit");
        b1.setBounds(50,70,90,40);
        tf1=new JTextField();
        tf1.setBounds(70,100,90,40);

        f.add(l1);
        f.add(b1);
        f.add(tf1);
        l1.setLayout(new BorderLayout());

        f.setVisible(true);
        f.setSize(500,500);
        f.setLayout(null);
    }

    public static void main(String[] args) {
        new Main();
    }
}

2 个答案:

答案 0 :(得分:0)

查看以下代码是否适合您。我只在您的代码中更改了这些行:

f.add(l1, BorderLayout.NORTH);
f.add(b1, BorderLayout.SOUTH);
f.add(tf1, BorderLayout.CENTER);
//f.setLayout(null);

完整代码:

import javax.swing.*;
import java.awt.*;

public class Main {
  JFrame f;
  JLabel l1;
  JButton b1;
  JTextField tf1;

  public Main(){
    f=new JFrame();
    l1=new JLabel("This is the new Label");
    l1.setBounds(10,20,50,30);
    b1=new JButton("Submit");
    b1.setBounds(50,70,90,40);
    tf1=new JTextField();
    tf1.setBounds(70,100,90,40);

    f.add(l1, BorderLayout.NORTH);
    f.add(b1, BorderLayout.SOUTH);
    f.add(tf1, BorderLayout.CENTER);
    l1.setLayout(new BorderLayout());

    f.setVisible(true);
    f.setSize(500,500);
    //f.setLayout(null);
  }

  public static void main(String[] args) {
    new Main();
  }
}

答案 1 :(得分:0)

代码中唯一的错误是:

您在设置框架布局之前放置了f.setVisible(true)。 您在构造函数中的最后几行应为:

f.setLayout(null);
f.setSize(500,500);
f.setVisible(true);
  

setVisible()仅在进行所有更改后才应调用   想在框架上。

还删除行l1.setLayout()。我不明白您为什么在这里设置标签的布局。