0

私は立ち往生しています。JButton をクリックすると、別の JFrame にある JApplet を起動する JFrame があります。私が疑問に思っているのは、JApplet の「Exit」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);
        }

    }
 }
4

1 に答える 1