无法设置组件大小correclty

时间:2017-11-02 17:34:37

标签: java swing

我做了一个简单的swing程序来显示Text Area和它下面的按钮,但是即使在使用setBounds()之后,按钮也会显示在整个Frame上。这是我的代码 -

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

After Execution of code

1 个答案:

答案 0 :(得分:1)

不要使用setBounds()。 Swing旨在与布局管理器一起使用。

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

相反,你的逻辑应该是这样的:

JButton button = new JButton(...);
JPanel wrapper = new JPanel();
wrapper.add(button);
frame.add(wrapper, BorderLayout.PAGE_START);

JPanel的默认布局是FlowLayout,它会以首选尺寸显示按钮。

阅读Layout Manager上Swing教程中的部分,了解有关BorderLayoutFlowLayout的更多信息。