无法从主类启动另一个窗口

时间:2015-01-02 00:57:52

标签: java swing

这是我的课程..

package sample;


public class Sample {


    public static void main(String[] args) {
        // TODO code application logic here
        newda l = new newda();
        l.setVisible(true);
    }

}

然后是下一个Class newda

package sample;

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


public class newda extends JApplet  {

    JButton ab ;
    public void init()
    {   
        Container ac = getContentPane();
        ac.setLayout(new FlowLayout());
        ab= new JButton("Show");
        ac.add(ab);
    }

}

当我运行newda类时,会显示一个带有show按钮的窗口(我无法添加输出的图像)。当我运行项目时,Sample的主类应该将newda窗口设置为true并产生相同的结果,但什么都没有显示出来。项目执行在1秒内完成。

然而,当我使用JFrame时,这是有效的。我想知道为什么它在不使用JFrame时不起作用。

2 个答案:

答案 0 :(得分:1)

花点时间了解applet和windows之间的区别

applet是一个嵌入浏览器窗口的容器,它没有自己窗口的概念。

public class newda extends JApplet {更改为更像public class NewDa extends JFrame {

的内容

您可能还想查看Initial Threads,并确保在Event Dispatching Thread的上下文中创建UI

您可能希望阅读Code Conventions for the Java TM Programming Language,这样可以让人们更轻松地阅读您的代码并让您阅读其他代码

答案 1 :(得分:1)

public class newda extends JApplet  {

这是一个applet。 applet不是一个与框架相同的“窗口”,但需要嵌入一个网页。

您认为applet是一个窗口的原因可能是,您的IDE会在JFrame内显示applet。例如。 applet viewer是一个托管applet的JFrame