无法设置按钮';java swing应用程序中的位置

无法设置按钮';java swing应用程序中的位置,java,swing,layout,jbutton,layout-manager,Java,Swing,Layout,Jbutton,Layout Manager,我是Java新手,正在尝试开发一个基本的swing应用程序。我想在JFrame上设置按钮的位置。我试图这样做,但无法做到这是我的代码。我正在使用eclipse进行开发 public class MyUI extends JFrame { JButton button1 = new JButton("Click"); JTextField tb1 = new JTextField(5); JPanel panel1 = new JPanel(); public

我是Java新手,正在尝试开发一个基本的swing应用程序。我想在
JFrame
上设置按钮的位置。我试图这样做,但无法做到这是我的代码。我正在使用eclipse进行开发

public class MyUI extends JFrame {

    JButton button1 = new JButton("Click");
    JTextField tb1 = new JTextField(5);
    JPanel panel1 = new JPanel();

    public MyUI() {
        super("Test");
        setVisible(true);
        this.setLayout(null);
        panel1.setLayout(null);
        panel1.setVisible(true);
        button1.setVisible(true);
        panel1.add(button1);
        add(panel1);
        panel1.setLocation(10, 10);
        button1.setLocation(10, 10);    
        setDefaultCloseOperation(EXIT_ON_CLOSE);    
        button1.addActionListener(this);
    }

    public static void main(String[] args) {
        MyUI gui = new MyUI();
        gui.setSize(400, 300);
    }
}

1.为什么将两个
jcomponent
放在同一个
边界上

panel1.setLocation(10, 10);
button1.setLocation(10, 10);  
2.看一看

3.
公共类MyUI扩展JFrame{

应该是

public class MyUI extends JFrame implements ActionListener{ 
4.不要扩展JFrame,创建一个局部变量

5.
setVisible(true);
应该是(在此表单中)进入
MyUI()构造函数的最后一行代码

6.
setVisible(true);
是一个重要问题,您可以访问
JFrame
,然后添加
JComponent
(s)

7.不要使用
NullLayout
,使用适当的
LayoutManager
,以防删除
this.setLayout(null);
panel1.setLayout(null);
添加的
JComponents

8.使用
pack()
setVisible(true)
之前作为构造函数中的最后两行代码

编辑(使用内置布局管理器
JFrame
BorderLayout
JPanel的
FlowLayout


无法看到您的面板和按钮,因为它们的大小为零。请添加以下内容:

panel1.setSize(100, 100);
button1.setSize(80, 30);
或者使用更方便同时设置位置和大小的
setBounds
方法:

panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);

我想提出一些建议,虽然这不是你问题的直接答案,但从我的观点来看,这仍然很重要


您可以使用NetBeans团队在2005年开发的
组布局
,这是一款非常棒的工具…尝试使用谷歌免费提供的
Windows Builder Pro
。您可以在短时间内启动并运行您的应用程序……

既然您似乎不使用布局,看看教程,您有什么理由这样做吗当您不使用布局时使用面板?另外:是否有原因,您不使用布局?Do.not.use.Null.Layout.Ever-LayoutManager的存在有一个原因,即在定位/调整组件大小时接管所有脏细节,利用它们!1.按钮位于面板内,因此按钮的位置相对于面板。可能(有时)miss_Speed by JVM,这是使用NullLayout而不插入公共类MyUI extends JFrame implements ActionListener的税否:a)不扩展JFrame b)不要公开不用于公共用途的api,或者换句话说:不要实现任何接口,而是在内部创建一个实例并使用该论坛未为
Absolu打开的apiteLayou
t,+1只针对
不投票人
,永远不要使用
NullLayout
而不使用
Insets
,永远不要使用setBounds(),使用在parents-1附近返回的
Insets
(正如@mKorbel所预期的;-)在接近100%的上下文中,空布局是不正确的……相反,选择并使用一个能满足您需要的布局管理器
panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);