我是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);
}
}
答案 0 :(得分: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
(s)
7.不要使用NullLayout
,使用正确的LayoutManager
,如果您删除this.setLayout(null);
,panel1.setLayout(null);
添加的JComponents
可见< / p>
8.在pack()
之前使用setVisible(true)
作为构造函数
编辑(使用built_in LayoutManagers
,BorderLayout
JFrame
和FlowLayout
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();
}
});
}
}
答案 1 :(得分:0)
您的面板和按钮看不见,因为它们的尺寸为零。添加如下内容:
panel1.setSize(100, 100);
button1.setSize(80, 30);
或使用更方便同时设置位置和大小的setBounds
方法:
panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);
答案 2 :(得分:-1)
想提出一些建议,虽然它不是你问题的直接答案,但从我的观点来看仍然很重要....
您可以使用由NetBeans团队在2005年开发的Group Layout
,它非常适合使用....尝试免费使用Google提供的Windows Builder Pro
...可以立即启动并运行您的应用程序......