【问题标题】:Closing JFrame from JApplet从 JApplet 关闭 JFrame
【发布时间】:2013-10-31 14:04:32
【问题描述】:

我被困住了。我有一个 JFrame,在单击 JButton 时,它会启动另一个 JFrame 中的 JApplet。我想知道的是如何在单击 JApplet 中的“退出”JButton 时关闭 JApplet 所在的 JFrame。

编辑:我将我的代码切分以表明我的意思。

 import javax.swing.JFrame;

 public class Example {


 public static void main(String[] args) {
    Menu frame = new Menu();
    frame.setTitle("Menu");
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setResizable(false);
    frame.setVisible(true);

    }
 }

.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Menu extends JFrame{

private JButton jbt=new JButton("Applet");

public Menu(){
    add(jbt);

    ButtonListener listener=new ButtonListener();
    jbt.addActionListener(listener);

}
public static void run(JApplet applet, int width, int height,String title){
    JFrame myFrame = new JFrame();
    myFrame.setTitle(title);
    myFrame.getContentPane().add(applet);
    myFrame.setSize(width, height);
    myFrame.setResizable(true);
    myFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    applet.init();
    applet.start();
    myFrame.setVisible(true);
}

class ButtonListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e){
        if (e.getSource()==jbt)
        {
            run(new myApplet(),400,180,"Applet");
        }

    }
 }
}

.

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    public class myApplet extends JApplet{

        private JButton jbtExit=new JButton();

    @Override
    public void init(){
        add(jbtExit);
        jbtExit.addActionListener(new ButtonListener());
    }

    class ButtonListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e){
        if (e.getSource()==jbtExit)
        {
            setVisible(false);
        }

    }
 }

【问题讨论】:

  • Applet 没有嵌入到 JFrame 中,它们显示在网页上。所以我不明白你的设计或问题。
  • @camickr 虽然它们并不打算嵌入到 JFrames 中,但 applet 可以 嵌入。毕竟,无论是由网页加载,还是由模仿页面功能的框架加载,都没有太大区别(就小程序而言),但小程序在框架的 JVM 上运行。
  • 对不起,我的意思是 JFrame 有一个 JApplet 作为内容。
  • 我想我的评论是你为什么要设计这样的东西?你想做什么?通常,您将面板添加到框架中。是的,JApplet 只是一个组件,您为什么要使用它而不是面板?
  • 我有一个任务,我必须编写一个在屏幕上显示菜单的 java 应用程序。从这个菜单中,我必须有一些按钮来调用某些小程序来显示用户界面。

标签: java swing jframe japplet


【解决方案1】:

请参阅Closing an Application 了解一些一般性想法。

您应该可以使用ExitAction 作为退出按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多