您的位置:程序门 -> java -> j2se / 基础类



既是applet又是application的java程序的关闭问题。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


既是applet又是application的java程序的关闭问题。[已结贴,结贴人:andrew80]
发表于:2007-01-05 14:56:00 楼主
有一个既是applet又是application的java程序,当作为application运行时,点击windows窗口的x时,并不能关闭程序,而只能关闭进程,添加什么语句可以使用windows的x关闭程序呢?

代码如下:
import   java.awt.*;
import   java.awt.event.*;
import   java.applet.*;
import   javax.swing.*;
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;
import   javax.swing.event.*;

/**
  *   <p> title:   </p>
  *   <p> description:   </p>
  *   <p> copyright:   copyright   (c)   2006 </p>
  *   <p> company:   </p>
  *   @author   not   attributable
  *   @version   1.0
  */

public   class   applet1   extends   applet   {
    private   boolean   isstandalone   =   false;
    jtabbedpane   stradactab   =   new   jtabbedpane();
    jpanel   jpanel1   =   new   jpanel();
    jpanel   jpanel2   =   new   jpanel();
    jscrollpane   jscrollpane1   =   new   jscrollpane();
    jtextfield   jtextfield1   =   new   jtextfield();
    jcombobox   jcombobox1   =   new   jcombobox();
    jtextpane   jtextpane1   =   new   jtextpane();
    jbutton   jbutton1   =   new   jbutton();
    jtextarea   jtextarea1   =   new   jtextarea();
    jtogglebutton   jtogglebutton1   =   new   jtogglebutton();
    jbutton   jbutton2   =   new   jbutton();
    jtextarea   jtextarea2   =   new   jtextarea();
    jeditorpane   jeditorpane1   =   new   jeditorpane();

//get   a   parameter   value
    public   string   getparameter(string   key,   string   def)   {
        return   isstandalone   ?   system.getproperty(key,   def)   :
                (getparameter(key)   !=   null   ?   getparameter(key)   :   def);
    }

//construct   the   applet
    public   applet1()   {
    }

//initialize   the   applet
    public   void   init()   {
        try   {
            jbinit();
        }
        catch(exception   e)   {
            e.printstacktrace();
        }
    }

//component   initialization
    private   void   jbinit()   throws   exception   {
        this.setlayout(null);
        stradactab.setbounds(new   rectangle(40,   18,   317,   260));
        jpanel1.setbounds(new   rectangle(6,   51,   31,   52));
        jpanel1.setlayout(null);
        jpanel2.setbounds(new   rectangle(1,   129,   38,   87));


        jbutton1.setbounds(new   rectangle(56,   143,   93,   47));
        jbutton1.settext( "jbutton1 ");
        jbutton1.addactionlistener(new   java.awt.event.actionlistener()   {
            public   void   actionperformed(actionevent   e)   {
                jbutton1_actionperformed(e);
            }
        });

        jbutton2.settext( "jbutton2 ");
        jbutton2.addactionlistener(new   java.awt.event.actionlistener()   {
            public   void   actionperformed(actionevent   e)   {
                jbutton2_actionperformed(e);
            }
        });
        jpanel1.add(jbutton1,   null);
        jpanel2.add(jbutton2,   null);

        this.add(stradactab,   null);
        stradactab.add( "druhy ",jpanel2);
        stradactab.add( "prvni ",jpanel1);


        stradactab.addchangelistener(new   changelistener()   {
            public   void   statechanged(changeevent   e)   {
                int   index   =   stradactab.getselectedindex();
                string   title   =   stradactab.gettitleat(index);
                system.out.println( "index   =   "   +
                                                      index);
                system.out.println( "title   =   "   +
                                                      title);
            }
        });

    }

//start   the   applet
    public   void   start()   {
    }

//stop   the   applet
    public   void   stop()   {
    }

//destroy   the   applet
    public   void   destroy()   {
    }

//get   applet   information
    public   string   getappletinfo()   {
        return   "applet   information ";
    }

//get   parameter   info
    public   string[][]   getparameterinfo()   {
        return   null;
    }

//main   method
    public   static   void   main(string[]   args)   {
        applet1   applet   =   new   applet1();
        applet.isstandalone   =   true;
        frame   frame;
        frame   =   new   frame();
        frame.settitle( "applet   frame ");
        frame.add(applet,   borderlayout.center);
        applet.init();
        applet.start();
        frame.setsize(400,320);
        dimension   d   =   toolkit.getdefaulttoolkit().getscreensize();
        frame.setlocation((d.width   -   frame.getsize().width)   /   2,   (d.height   -   frame.getsize().height)   /   2);
        frame.setvisible(true);
    }

    void   jbutton2_actionperformed(actionevent   e)   {
        stradactab.setselectedindex(1);
    }

    void   jbutton1_actionperformed(actionevent   e)   {
        stradactab.setselectedindex(0);
    }

}
发表于:2007-01-05 15:04:041楼 得分:0
你的思路是错的

即时applet又是application的程序需要两个底层容器。一个是jframe,一个是japplet
当通过main函数来启动的时候,通过jframe来显示,通过页面启动时用japplet来启动
也就是说你需要一个自己的容器jpanel,把所有的界面放到这个jpanel里面,然后需要的时候把这个jpanel放到jframe里或者japplet里


不知道你明白我的意思没。就界面程序本身来说,他既不是applet,也不是frame,只是一个panel,只不过需要通过什么方式显示,就让什么作为他的容器就ok了
发表于:2007-01-05 15:12:482楼 得分:0
我理解一下,可以我现在首先想知道,如何关闭这个程序,点击windows的x按钮没作用,您知道如何获取windows的点击x按钮的消息吗?
发表于:2007-01-05 15:31:273楼 得分:75
使用jframe:

import   java.awt.*;
import   java.awt.event.*;
import   java.applet.*;
import   javax.swing.*;
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;
import   javax.swing.event.*;
import   javax.swing.jframe;

/**
  *   <p> title:   </p>
  *   <p> description:   </p>
  *   <p> copyright:   copyright   (c)   2006 </p>
  *   <p> company:   </p>
  *   @author   not   attributable
  *   @version   1.0
  */

public   class   applet1   extends   applet   {
    private   boolean   isstandalone   =   false;
    jtabbedpane   stradactab   =   new   jtabbedpane();
    jpanel   jpanel1   =   new   jpanel();
    jpanel   jpanel2   =   new   jpanel();
    jscrollpane   jscrollpane1   =   new   jscrollpane();
    jtextfield   jtextfield1   =   new   jtextfield();
    jcombobox   jcombobox1   =   new   jcombobox();
    jtextpane   jtextpane1   =   new   jtextpane();
    jbutton   jbutton1   =   new   jbutton();
    jtextarea   jtextarea1   =   new   jtextarea();
    jtogglebutton   jtogglebutton1   =   new   jtogglebutton();
    jbutton   jbutton2   =   new   jbutton();
    jtextarea   jtextarea2   =   new   jtextarea();
    jeditorpane   jeditorpane1   =   new   jeditorpane();

//get   a   parameter   value
    public   string   getparameter(string   key,   string   def)   {
        return   isstandalone   ?   system.getproperty(key,   def)   :
                (getparameter(key)   !=   null   ?   getparameter(key)   :   def);
    }

//construct   the   applet
    public   applet1()   {
    }

//initialize   the   applet
    public   void   init()   {
        try   {
            jbinit();
        }
        catch(exception   e)   {
            e.printstacktrace();
        }
    }

//component   initialization
    private   void   jbinit()   throws   exception   {
        this.setlayout(null);
        stradactab.setbounds(new   rectangle(40,   18,   317,   260));
        jpanel1.setbounds(new   rectangle(6,   51,   31,   52));
        jpanel1.setlayout(null);
        jpanel2.setbounds(new   rectangle(1,   129,   38,   87));


        jbutton1.setbounds(new   rectangle(56,   143,   93,   47));
        jbutton1.settext( "jbutton1 ");
        jbutton1.addactionlistener(new   java.awt.event.actionlistener()   {
            public   void   actionperformed(actionevent   e)   {
                jbutton1_actionperformed(e);
            }
        });

        jbutton2.settext( "jbutton2 ");
        jbutton2.addactionlistener(new   java.awt.event.actionlistener()   {
            public   void   actionperformed(actionevent   e)   {
                jbutton2_actionperformed(e);
            }
        });
        jpanel1.add(jbutton1,   null);
        jpanel2.add(jbutton2,   null);

        this.add(stradactab,   null);
        stradactab.add( "druhy ",jpanel2);
        stradactab.add( "prvni ",jpanel1);


        stradactab.addchangelistener(new   changelistener()   {
            public   void   statechanged(changeevent   e)   {
                int   index   =   stradactab.getselectedindex();
                string   title   =   stradactab.gettitleat(index);
                system.out.println( "index   =   "   +
                                                      index);
                system.out.println( "title   =   "   +
                                                      title);
            }
        });

    }
    protected   void   processwindowevent(windowevent   e)   {
            system.out.print( "hello ");
            system.exit(0);
    }

//start   the   applet
    public   void   start()   {
    }

//stop   the   applet
    public   void   stop()   {
    }

//destroy   the   applet
    public   void   destroy()   {
    }

//get   applet   information
    public   string   getappletinfo()   {
        return   "applet   information ";
    }

//get   parameter   info
    public   string[][]   getparameterinfo()   {
        return   null;
    }

//main   method
    public   static   void   main(string[]   args)   {
        applet1   applet   =   new   applet1();
        applet.isstandalone   =   true;
        jframe   frame;
        frame   =   new   jframe();
        frame.settitle( "applet   frame ");
        frame.getcontentpane().add(applet,   borderlayout.center);
        applet.init();
        applet.start();
        frame.setsize(400,320);
        dimension   d   =   toolkit.getdefaulttoolkit().getscreensize();
        frame.setlocation((d.width   -   frame.getsize().width)   /   2,   (d.height   -   frame.getsize().height)   /   2);
        frame.setvisible(true);
        //frame.setdefaultcloseoperation(exit_on_close);
    }

    void   jbutton2_actionperformed(actionevent   e)   {
        stradactab.setselectedindex(1);
    }

    void   jbutton1_actionperformed(actionevent   e)   {
        stradactab.setselectedindex(0);
    }

}
发表于:2007-01-05 15:35:124楼 得分:25
好吧,只解决你退出问题
jframe   f=new   jframe();
f.setdefaultcloseoperation(jframe.exit_on_close);
发表于:2007-01-05 15:36:265楼 得分:0
it   works,   3q


快速检索

最新资讯
热门点击