java – 如何在Applet扩展类中调用paint方法?

我有两个名为PaintMe.java和Starter.java的类文件.
PaintMe.java包含:

import java.applet.Applet;
import java.awt.*;

public class PaintMe extends Applet {
    public void paint(Graphics g) {
        g.setColor(Color.red);
        g.drawString("HELLOOO", 15, 25);
    }
}

Starter.java包含:

import java.applet.Applet;
import java.awt.Graphics;


public class Starter {
    public static void main(String[] args) {
        PaintMe ring = new PaintMe();
        ring.paint();
    }
}

所以问题是,如何通过从Starter.java调用paint方法来绘制我的字符串?

解决方法:

要进行编译,请进行更改

ring.paint();

..至..

ring.repaint();

笔记

>在这个千年里,不要使用AWT进行编码.使用Swing(提供JApplet).
>不要从main(String [])启动applet.当JRE嵌入网页(或使用JWS启动)时,小程序会启动小程序.可以在面板中设计GUI,然后将其放入*浮动的应用程序或小程序中.这被称为混合动力车.但框架和小程序分别添加了GUI,这通常是(通常)不同的类.
>它存在的主要是无用的.除非将applet添加到容器中并使其可见,否则代码将成功运行,但会在几分钟内结束而不显示任何内容.

更新1

..tried that, but it still doesn’t draw my string in the applet window.

试试这个.

资源

// <applet code='PaintMe' width=300 height=50></applet>
import java.applet.Applet;
import java.awt.*;

public class PaintMe extends Applet {
    public void paint(Graphics g) {
        g.setColor(Color.red);
        g.drawString("HELLOOO", 15, 25);
    }
}

提示

> javac PaintMe.java
> appletviewer PaintMe.java

截图

更新2

..I need to have it started from Starter.java class.

我认为这是一个愚蠢的要求,似乎JWS(如在评论中提到和链接)启动JFrame是查看此GUI的最佳方式. OTOH,这是一个(非常)天真的Starter类实现,它将在屏幕上显示applet.

它混合了AWT和Swing(坏),它不会尝试实现任何类型的applet上下文,也不会调用applet init / start / stop / destroy方法,但足以从另一个类中获取applet.

import java.awt.Dimension;
import javax.swing.JOptionPane;

public class Starter {
    public static void main(String[] args) {
        PaintMe ring = new PaintMe();
        ring.setPreferredSize(new Dimension(250,30));
        JOptionPane.showMessageDialog(null, ring);
    }
}
上一篇:C++助教篇0_C++防劝退小手册,如何安稳地从C++ green hands过渡到C++ beginner


下一篇:java – 按钮最初不绘制