我被困住了。我有一个 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);
}
}
}
最佳答案
参见Closing an Application一些一般性的想法。
您应该能够使用 ExitAction
作为退出按钮。
关于java - 从 JApplet 关闭 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19698900/