我做了一个简单的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);
}
}
答案 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教程中的部分,了解有关BorderLayout
和FlowLayout
的更多信息。