import javaawt;
public class GraphicsTest extends Applet{
public void paint(Graphics g)
{
thissetBackground(ColorYELLOW);
gdrawLine(0, 85, 125, 85);
gdrawOval(100, 60, 50, 50);
}
}应该先调用父类的paint,即superpaint(g),不过最好的方法还是继承出一个JPanel的子类,然后重载它的paint方法,然后把这个子类的实例增加到JFrame的容器里import javaawt;
import javaapplet;
import javamath;
import javaawtevent;
public class dffg extends Applet implements ActionListener
{
Button bb,bn;
TextField tt;
int aa;
public void init()
{
bb=new Button("画图");
bn=new Button("清除重画");
tt=new TextField(5);
add(bb);
add(tt);
add(bn);
bbaddActionListener(this);
bnaddActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(egetSource()==bb)
{
int aa=IntegerparseInt(ttgetText());
Graphics g=getGraphics();
for(int i=1;i<500;i++)
{
int x=i;
int y=(int)(Mathsin(aax314/181)100+150);
gdrawString("s",x,y);
}
}
if(egetSource()==bn)
{
repaint();
}
}
}只提指导,没有源码。
在 Java 中要自定义组件,一般是覆盖掉 protected void paintComponent(Graphics g); 方法就可以了,对于你这个类似画笔的程序,首先,整个画布是一个自定义的继承自像 JPanel 一样的东西,不过我们需要覆盖它的 paintComponent 方法,因为:一、我们需要在当鼠标拖放一个东西时我们移动这个选中的图形时记住它的位置;二、设定 label 时需要保存它的 Label。三、知道图形的形状。
,然后在 paintComponent 时依次画出各个图形来。
要绘图:
1、直线,gdrawLine(x,y,x2,y2); // 参数分别是起止点坐标。
2、矩形,gfillRect(x, y, w, h); // 参数分别是左上角坐标和宽及高。
3、椭圆,gfillOval(x, y, w, h); // 参数分别是椭圆形的外切矩形的左上角坐标及宽和高,当w 和 h 相等时是个圆。
准备绘图前 gsetColor() 设置前景色;先把整个画布用 gfillRect() 涂成白色,再分别画各个图形,最后绘制 Label 应该在画图形之后再做。
移动图形,是给 画布组件 addMouseMotionListener 来监听事件的,在拖动时先通过 mouseDragged 事件的 MouseEventpoint 知道它的位置是在哪个图形的内部,之后的移动就修改这个图形的位置。首先,如果你只是要实现电子时钟,根本就不需要用到多线程。
如果你真的是要使用,就新建一个类,实现Runnable接口就是了。
如:
class MyThread1 implements Runnable{
public MyThread(){
}
public void run(){
}
}
使用的时候,就:
Thread myThread=new Thread(new MyThread());
myThreadstart();
如果要画图,你就直接把组件通过构造方法传到MyThread中就是了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)