Я хочу закрыть рамку при нажатии X (кнопка закрытия) - PullRequest
1 голос
/ 03 апреля 2012

У меня есть небольшой шаблон, который я построил с целью реализации апплета через простое Java-приложение через NetBeans 7.1 (как при использовании Javacard, Netbeans Platform и т. Д. Просто простое Java-приложение с апплетом, инициализированным при запуске приложения)

Мне удалось заставить его вызывать апплет, когда я нажимаю кнопку запуска в NetBeans и у меня есть функциональность внутри апплета, но я не могу заставить его закрыться, и у меня ужасное чувство, что люди скажутя использовал jFrame и реализовал метод EXIT_ON_CLOSE.

Это НЕ то, что я хотел бы знать, как это сделать, моя миссия - реализовать его с помощью Frames! = jFrames.Я надеюсь, что кто-то может помочь, так как это меня немного напрягает, и мне нужно приступить к назначению Java, которое предполагает его использование.

В приложении есть код / ​​классы для A: appletframe и B: applet

    * 1.4   Write an applet to display a line of text. 
    * The text should then change its font size and style (bold, italic, underline) 
    * depending on where the mouse is clicked on the screen.
    */
   package appletframe;
   import java.awt.Graphics;
  import java.awt.Frame;
 import java.applet.Applet;

  /**
  * @author MuthaLoad aka Gruffy2012
  */

  import java.awt.*;

  public class AppletFrame extends Applet{

 public static void main(String[] args) {

/*construct needs object instances*/
MrApplet mrApplet = new MrApplet(); // create instance/obj of MrApplet 
Frame myFrame = new Frame("Applet"); // create frame "title optional"
//setDefaultCloseOperation(myFrame.EXIT_ON_CLOSE);(jFrame- not wanted)

/* add applet to the frame*/
//myFrame.addWindowListener();
myFrame.add(mrApplet, BorderLayout.CENTER);
myFrame.setBounds(10,10,500,500);
myFrame.setVisible(true); // step to make frame visible

/*initialize instance of mrApplet*/
mrApplet.init();
} // end main
} // end class

B: апплет

   package appletframe;

import java.awt.*; //for buttons
import java.awt.event.*; //for events
import java.applet.*; //main applet api`s
import java.awt.Graphics; //graphics

public class MrApplet extends Applet implements ActionListener
{

private static final long serialVersionUID = 1L;
Button btnClick;
String msg = "";

public void init() 
{
    // TODO start asynchronous download of heavy resources
    setSize(500, 500);
    Button btnClick = new Button("Press Me ");
    btnClick.addActionListener(this);
    add(btnClick);
}
public void actionPerformed(ActionEvent e) 
{
    //throw new UnsupportedOperationException("Not supported yet.");
    msg = "Yay, the button works";
            repaint();
}     
public void paint (Graphics g)
{
    g.setFont(new Font("Serif", Font.ITALIC, 30)); //new font obj, font , font style, font size
    g.setColor(new Color(0,255,0)); //new color obj, r,g,b
    g.drawString(msg, 40, 80); 

}  
// TODO overwrite start(), stop() and destroy() methods
}

Еще раз спасибо за чтение и прояснение любых недоразумений .. Я ищу указатель относительно решения о закрытии окна моего апплета и фреймапри выходе, без переопределения всего этого с помощью jFrame, хотя я знаю, что это будет проще в первом случае.Спасибо и, как всегда, в долгу за все ваши советы.gruffy321

1 Ответ

3 голосов
/ 03 апреля 2012

добавьте эту строку в конец класса ApplicationFrame.

myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Если вы хотите сделать это с Frame, а не с JFrame, то вам нужно добавить событие WindowListener к кадруи должны переопределить windowClosing () метод.

myFrame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
   System.exit(0);
});
...