Java AWT:applet将在没有main(),init(),start(),paint()的情况下运行

时间:2013-07-29 16:45:01

标签: java applet awt mouselistener

我正在学习AWT并计划稍后学习Swing。

我找到了applet的以下代码,我知道applet将在以下方法出现时开始运行:main(),init(),start(),paint()......

每次点击鼠标时,小程序只会增加它的宽度和长度尺寸:

在此代码中没有上述内容,如何调用ResizeMe方法?如果没有调用resize methid,addmouselistener是如何调用的? 编辑:btw代码工作

// Resizing output to fit the current size of a window.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
/*
  <applet code="ResizeMe" width=200 height=200>
  </applet>
 */

public class ResizeMe extends Applet {
  final int inc = 25;
  int max = 500;
  int min = 200;
  Dimension d;

  public ResizeMe() {
    addMouseListener(new MouseAdapter() {
      public void mouseReleased(MouseEvent me) {
        int w = (d.width + inc) > max?min :(d.width + inc);
        int h = (d.height + inc) > max?min :(d.height + inc);
        setSize(new Dimension(w, h));
      }
    });
  }
  public void paint(Graphics g) {
    d = getSize();

    g.drawLine(0, 0, d.width-1, d.height-1);
    g.drawLine(0, d.height-1, d.width-1, 0);
    g.drawRect(0, 0, d.width-1, d.height-1);
  }
}

谢谢,路德

4 个答案:

答案 0 :(得分:2)

是的,main适用于桌面应用程序。在applet的生命周期中的特定时刻调用以下方法,并允许对该生命周期执行特定的操作。

  • init - 最初
  • 开始 - HTML页面(重新开始)
  • 停止 - 当一个人离开HTML页面时
  • 销毁 - 卸载小程序时

此外,AWT的组成部分真的已经过时了;只有java.awt.Color,Font等正在使用,Applet,Button和其他人都不会轻易找到。

所以我建议立即转向挥杆。


AWT 让每个纯Java组件都与本机代码(操作系统)组件保持一致。因此,Windows上的Button是一个真正的Windows按钮。因此,Windows,Mac和Linux都有单独的AWT实现。

Swing 完成所有工作,并且有几种外观(主题/皮肤)。 System Look-and-Feek尽可能地模拟当前的操作系统。 Swings的优势在于其高度可配置性,例如JLabel最小化图标和文本之间的距离,或者只需编写"<html><b>Boldly</b> go, ..."即可为每个文本组件使用HTML。

Swing是一项新的努力。

答案 1 :(得分:2)

ResizeMe()是构造函数。因此,它会在类创建时调用,因此会添加鼠标侦听器。 GUI事件处理线程调用paint()

答案 2 :(得分:1)

Java Applet类为initstartpaint方法提供默认实现(请参阅java.applet.Applet)。 ResizeMe类继承自java.applet.Applet,因此继承了Applet类中的所有方法(有关继承的更多信息,请参阅subclasses)。

Applet不需要main方法,因为它嵌入在另一个应用程序中。

ResizeMe()方法是构造函数。在实例化ResizeMe类时会自动调用它。

答案 3 :(得分:0)

ResizeMe正在扩展Applet,这意味着它继承了Applet拥有的所有方法。看看Docs for Applet,看看它包含哪些方法,以及它从父母那里继承的方法。

此外,没有理由学习AWT然后学习Swing。