java Applet如何在cmd下用main()也能同样运行?

BCBPLC 2011-10-16 10:56:00
mport java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class webTest extends Applet
{

public void paint(Graphics g)
{
int k=10;
g.setColor(Color.red);

for (int i=1;i<=30;i++)
g.drawString(""+i,20,20+i*15);

}
public static void main(String args[])
{
Frame frame0=new Frame("Frame1");
frame0.setSize(800,600);
frame0.setVisible(true);
Graphics g=frame0.getGraphics();
webTest web1=new webTest();
web1.paint(g);
}
关键是如何在静态方法中,调用 paint(Graphics g)问题,
1.不能直接在main()中调用paint(Graphics g),有没有更好的方法?
2.frame0没法关闭,如何用事件解决?
3.我的上述代码虽然能显示,但Frame0中显示的东西一旦破坏就不能自动刷新,
如何放到重画事件中?
...全文
260 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BCBPLC 2011-10-18
  • 打赏
  • 举报
回复
多谢了!结了
BCBPLC 2011-10-18
  • 打赏
  • 举报
回复
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class webTest extends Applet
{

public void paint(Graphics g)
{
int k=10;
g.setColor(Color.red);

for (int i=1;i<=30;i++)
g.drawString(""+i,20,20+i*15);

}

public static void main(String args[])
{
Frame frame0=new Frame("Frame1");
frame0.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
super.windowClosed(e);
System.exit(0);
}
});
webTest web1=new webTest();
frame0.add(web1);
frame0.setSize(800,600);
frame0.setVisible(true);
}
}

已通过。多谢各位,只是对
frame0.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
super.windowClosed(e);
System.exit(0);
}
});
的用法感到有点怪,还要多看书,刚搞了几天,我基本功还不行。
疯癫行者 2011-10-17
  • 打赏
  • 举报
回复
问题2:太基本了,书里面肯定说过,建议仔细看书,而不是上来就问。
问题3:前面给出的代码已经不存在这个问题了。
疯癫行者 2011-10-17
  • 打赏
  • 举报
回复

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

public class WebTest extends Applet //类的名字建议大写
{

public void paint(Graphics g)
{
int k=10;
g.setColor(Color.red);

for (int i=1;i<=30;i++)
g.drawString(""+i,20,20+i*15);

}

public static void main(String args[])
{
Frame frame0=new Frame("Frame1");
WebTest web1=new WebTest();
frame0.add(web1); //Applet是Panel类的子类,所以,当做Panel直接加在Frame里面就行了。
frame0.setSize(800,600);
frame0.setVisible(true);
}
}
uastation 2011-10-17
  • 打赏
  • 举报
回复
如果方法是静态方法的话,可以用类名.方法调用..即是: webTest.paint();

如果方法不是静态方法的话,必须先行实例化webTest类的对象,再用对象调用..
即:
webTest wt= new webTest();
wt.paint();
BCBPLC 2011-10-17
  • 打赏
  • 举报
回复
to stonefeng:
Frame1出来了,能自动刷新。但不能手工关闭Frame,
还要处理关闭事件才行:小叉子叉不掉
oO临时工Oo 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 bcbplc 的回复:]
mport java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class webTest extends Applet
{

public void paint(Graphics g)
{
int k=10;
g.setColor(Co……
[/Quote]

你用netBean写界面吧,会把事件给你绑定好。

java里面的界面甚至没C++的Visual环境智能,窗体事件是要自己绑定的。用netBean会好点。
BCBPLC 2011-10-17
  • 打赏
  • 举报
回复
我会C++,jAVA我这是第三次学,每次兴趣上来,几天后被不习惯困恼,说法放弃了。
这次兴趣 上来下不来了,是为了学ANDROID JAVA编程。

BCBPLC 2011-10-17
  • 打赏
  • 举报
回复
谢了,试试看。
疯癫行者 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lxbccsu 的回复:]

你加上下面的code:
Java code

frame0.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosed(e);
System.exit……
[/Quote]
对的。
lxbccsu 2011-10-17
  • 打赏
  • 举报
回复
你加上下面的code:

frame0.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosed(e);
System.exit(0);
}
});


还一点是 getGraphics();获取的是g的副本,且是与OS平台相关的图形环境;
不能直接在main()中调用paint;不能刷新等问题就清楚了。
BCBPLC 2011-10-16
  • 打赏
  • 举报
回复
1.不能直接在main()中调用paint(Graphics g),有没有更好的方法?
没有更好的办法,就是先建实例,才能调用:
webTest web1=new webTest(); // 先建实例
web1.paint(g); // 调用

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧