JButtons和JLabels没有出现

时间:2013-06-14 13:20:52

标签: java swing jbutton

我的代码出了什么问题?我的按钮和标签没有出现。

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

public class HelloPanelLabel extends JFrame {

    public static void main(String[] args) {
        new HelloPanelLabel(); // creates an instance of frame class
    }

    public HelloPanelLabel() {

        this.setSize(200, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Hello World!");
        this.setVisible(true);

        Toolkit tk=Toolkit.getDefaultToolkit();
        Dimension d= tk.getScreenSize();
        int x=(d.height/2);
        int y=(d.width/2);
        this.setLocation(x, y);
        //JPanel panel1 = new JPanel();
        JLabel label1 = new JLabel("hello, world");
        //panel1.add(label1);
        JButton button1 = new JButton("Click me!");
        //panel1.add(button1);
        this.setVisible(true);

    }

}

3 个答案:

答案 0 :(得分:1)

您需要设置layout并将您的组件添加到框架中。

setLayout(new FlowLayout());
//JPanel panel1 = new JPanel();
JLabel label1 = new JLabel("hello, world");
add(label1);
//panel1.add(label1);
JButton button1 = new JButton("Click me!");
add(button1);
//panel1.add(button1);
 this.setVisible(true);

与所述评论一样,您必须致电pack()。但是,如果要定义更复杂的布局,则必须创建更复杂的布局。

答案 1 :(得分:1)

未显示JButtonJLabel的原因是您尚未将包含这两个组件的JPanel添加到JFrame。您只需要稍加修改在你的代码中。这是:

panel1.add(label1);
JButton button1 = new JButton("Click me!");
panel1.add(button1);
getContentPane().add(panel1);//Add to ContentPane of JFrame
this.setVisible(true);

并删除您计划中的上一行this.setVisible(true)

答案 2 :(得分:0)

如果您想为组件使用JPanel

public class HelloPanelLabel extends JFrame {

    public static void main(String[] args) {
        new HelloPanelLabel().setVisible(true);
    }

    public HelloPanelLabel() {
        //The same as setTitle.
        super("Hello World!");

        JPanel panel1 = new JPanel();
        JLabel label1 = new JLabel("hello, world");
        panel1.add(label1);
        JButton button1 = new JButton("Click me!");
        panel1.add(button1);
        add(panel1);
        //Size the frame to fit the components
        pack();

        //Center the frame.
        setLocationRelativeTo(null);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }
}

或者您可以将它们直接添加到contentPane的{​​{1}}。

JFrame