Jpanel添加JButton但jpanel中没有出现任何东西,怎么回事?

我在一个方法中创建了一个final 局部变量jButton1,并jPanel1.add(jButton1);但是jButton1并没有出现
代码:class Test{
JPanel jPanel1=new JPanel();
public void main(String []args){
while(true){
test();
}
public void test(){
final JButton jButton1=new JButton();
jPanel1.add(jButton1);
}
}
到底是机器问题(即卡机)还是代码问题

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class Test extends JFrame {
private static final long serialVersionUID = -465765931505807251L;
JPanel jPanel1 = new JPanel();

public Test() {
setBounds(100, 100, 400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
final JButton jButton1 = new JButton("Button1");
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Hello world");
}
});
jButton1.setBounds(100, 100, 70, 30);
this.add(jButton1);
}

public static void main(String[] args) {
new Test().setVisible(true);
}
}
试试这段代码,希望对你有帮助,祝学习愉快。追问

请问您修改了什么地方并解释一下

追答

    首先你写的代码用的是java swing,有Button的前提是你得先有个窗口,所以类得继承JFrame

    窗口要显示就得用setVisible(true),这样窗口就会显示。

    setBounds(x, y, width, height);  x y 窗口左上角在屏幕上的坐标,width height窗口大小。

    jButton1.setBounds(100, 100, 70, 30); 这个也一样,button在窗口的坐标, button的大小。

    this.add(jButton1); 把button加到窗口上。

有什么不清楚,可以追问。

追问

我想解释一下我的源代码是有JFrame的,只不过我为了简便而省去了

追答

这样啊,你把button加到panel上,那你得把panel加到frame上,不然frame上就没东西了,祝学习顺利啦:)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-29
需要把jpanel加到JFrame里面,然后jframe的对象要setVisible()。追问

我想解释一下我的源代码是有JFrame的,只不过我为了简便而省去了,而且源代码中jFrame,JPanel正常,就是这个JButton不正常(另外,这个程序是用myeclipse swing界面做的,可是那个JButton是自己加的,不知这两者会不会有不兼容)

追答

使用源代码把组件写上去和利用GUI拖控件的效果是一样的,不存在兼容问题。

相似回答