Java 无法正确设置组件的大小

Java 无法正确设置组件的大小,java,swing,Java,Swing,我制作了一个简单的swing程序来显示文本区域和它下面的一个按钮,但即使在使用setBounds()之后,按钮也会显示在整个画面上。这是我的密码- import javax.swing.*; class Exp2 { public static void main(String... s) { JFrame jf=new JFrame("Exec"); JTextArea jtv=new JTextArea("Hello World"); jtv.setBoun

我制作了一个简单的swing程序来显示文本区域和它下面的一个按钮,但即使在使用setBounds()之后,按钮也会显示在整个画面上。这是我的密码-

import javax.swing.*;

class Exp2
{
  public static void main(String... s)
  {
    JFrame jf=new JFrame("Exec");
    JTextArea jtv=new JTextArea("Hello World");
    jtv.setBounds(5,5,100,60);
    JButton jb=new JButton("click");
    jb.setBounds(40,160,100,60);
    jf.add(jtv);
    jf.add(jb);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setSize(500,500);
    jf.setResizable(false);
    jf.setVisible(true);
  }
}

不要使用setBounds()。Swing设计用于布局管理器

框架的默认布局管理器是
边框布局
。因此,您不能直接将按钮添加到框架中

相反,您的逻辑应该是:

JButton button = new JButton(...);
JPanel wrapper = new JPanel();
wrapper.add(button);
frame.add(wrapper, BorderLayout.PAGE_START);
JPanel
的默认布局是
FlowLayout
,它将以首选大小显示按钮

有关
BorderLayout
FlowLayout
的更多信息,请阅读上Swing教程的部分