我制作了一个简单的swing程序来显示“文本区域”和它下面的一个按钮,但是即使使用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
最佳答案
不要使用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
的更多信息。