VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 739|回复: 5

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

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-11 14:30:01 | 显示全部楼层 |阅读模式
有一个既是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) 2016</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);
  }

}
回复

使用道具 举报

0

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-6-4 17:15:01 | 显示全部楼层
你的思路是错的

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


不知道你明白我的意思没。就界面程序本身来说,他既不是Applet,也不是Frame,只是一个panel,只不过需要通过什么方式显示,就让什么作为他的容器就ok了
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-6-5 17:15:01 | 显示全部楼层
我理解一下,可以我现在首先想知道,如何关闭这个程序,点击Windows的X按钮没作用,您知道如何获取windows的点击X按钮的消息吗?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-6-7 15:00:01 | 显示全部楼层
使用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) 2016</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);
  }

}
回复

使用道具 举报

0

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-6-7 20:45:02 | 显示全部楼层
好吧,只解决你退出问题
JFrame f=new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-6-7 23:30:01 | 显示全部楼层
it works, 3q
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表