私は立ち往生しています。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);
}
}
}