[英]Closing JFrame from JApplet
我被卡住了。 我有一個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);
}
}
}
有關一些一般性想法,請參見關閉應用程序 。
您應該可以對Exit按鈕使用ExitAction
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.