0
public class Benim extends JFrame {
    Container contentArea = getContentPane ();

public Benim(){
    JFrame frame=new JFrame("Concentration");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack(); 
     setSize(800, 800);

    JButton start=new JButton("Start");
    JPanel pane=new JPanel();
    pane.add(start);

    setVisible(true);
    frame.add(start);
    frame.add(pane);
    /* setContentPane(Container)


     JRootPane createRootPane()*/


}

public static void main (String []args){

            new Benim();

}
}

我的代码就是这样。我尝试先添加到面板,然后将面板添加到框架,直接添加到框架。添加一个根窗格,但我的按钮仍然没有出现。我正在尝试学习 2 天,但我仍然处于同一点。

4

2 回答 2

2

显示的实例JFrame没有JButton添加。

而是直接setVisible调用JFrame

您几乎不想扩展JFrame,因为没有添加新功能

其他注意事项

  • setVisible添加组件后调用
  • setSize是不必要的 - 让我们pack确定容器大小

这是结果

public class Benim extends JFrame {

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

            @Override
            public void run() {
                JFrame frame = new JFrame("Concentration");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JButton start = new JButton("Start");
                JPanel pane = new JPanel();
                pane.add(start);


                pane.add(start);
                frame.add(pane);
                frame.pack();
                frame.setVisible(true);             
            }
        });
    }
}
于 2013-09-22T16:26:05.600 回答
0

为什么另一个 JFrame 实例?您正在扩展它,所以只需调用super().

public class Benim extends JFrame {
  Container contentArea = getContentPane ();

  public Benim(){
    super("Concentration");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setSize(800, 800);

    JButton start=new JButton("Start");
    JPanel pane=new JPanel();
    pane.add(start);
    add(pane);

    setVisible(true);
  }

  public static void main (String []args){
    new Benim();
  }
}

Reimeus 还正确地指出,如果您不打算扩展功能,则不需要扩展 JFrame。请参阅他的示例以获取替代实现。

于 2013-09-22T16:32:43.053 回答