0

我是 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);
    }
}
4

3 回答 3

2

1.为什么你把两个放在JComponents同一个Bounds

panel1.setLocation(10, 10);
button1.setLocation(10, 10);  

2.看看Initials Thread

3.public class MyUI extends JFrame {

应该

public class MyUI extends JFrame implements ActionListener{ 

4.不要扩展JFrame,创建一个局部变量

5.setVisible(true);应该(以这种形式)只有最后一行代码进入MyUI()构造函数

6.很重要的setVisible(true);问题,你看得见JFrame再补充JComponent

7.不要使用NullLayout,正确使用LayoutManager,在你删除this.setLayout(null);panel1.setLayout(null);添加的情况下JComponents可以看到

8.在构造函数中使用pack()beforesetVisible(true)作为最后两行代码

编辑(通过使用built_in LayoutManagers, BorderLayoutforJFrameFlowLayoutfor JPanel

import java.awt.event.*;
import javax.swing.*;

public class MyUI extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;
    private JButton button1 = new JButton("Click");
    private JTextField tb1 = new JTextField(5);
    private JPanel panel1 = new JPanel();

    public MyUI() {
        super("Test");
        panel1.add(tb1);
        panel1.add(button1);
        add(panel1);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        button1.addActionListener(this);
        pack();
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                MyUI testing = new MyUI();
            }
        });
    }
}
于 2012-09-13T13:22:26.260 回答
0

看不到您的面板和按钮,因为它们的大小为零。添加类似:

panel1.setSize(100, 100);
button1.setSize(80, 30);

或者使用setBounds更方便的方法同时设置位置和大小:

panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);
于 2012-09-13T13:40:29.707 回答
-1

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

您可以使用Group LayoutNetBeans 团队早在 2005 年开发的应用程序,使用起来非常棒......现在尝试使用Windows Builder ProGoogle 免费提供的应用程序......您可以立即启动并运行您的应用程序...... ...

于 2012-09-13T17:59:41.113 回答