例如:public int a=500;
public void testa(Shell shell,int a){
GC gc = new GC(shell);
gc.drawLine(a, 500, 300, 300);
}就想上面的代码,是一个类,里面有个画直线的方法。其中我向这个方法传入一个参数,a 我在写一个BUTTON单击事件 button.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(final SelectionEvent e) {
shell.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
}
});
BUTTON里的代码我就不写了,这里用botton事件里调用了,那个画直线的方法,目的是我没点一次button a的值就能+1,这些效果都出来了,可是,没点一次button就会画出一条新的直线,
原来的直线还是存在,我想问的是,怎么才能点击button的时候只画出新的直线而原来的直线让他消失呢,
谢谢,我的发言完了。
public void testa(Shell shell,int a){
GC gc = new GC(shell);
gc.drawLine(a, 500, 300, 300);
}就想上面的代码,是一个类,里面有个画直线的方法。其中我向这个方法传入一个参数,a 我在写一个BUTTON单击事件 button.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(final SelectionEvent e) {
shell.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
}
});
BUTTON里的代码我就不写了,这里用botton事件里调用了,那个画直线的方法,目的是我没点一次button a的值就能+1,这些效果都出来了,可是,没点一次button就会画出一条新的直线,
原来的直线还是存在,我想问的是,怎么才能点击button的时候只画出新的直线而原来的直线让他消失呢,
谢谢,我的发言完了。
//<8.4>GUI组件上的图形操作:
//1. Graphics类:
//还是通过画线例子吧……….
//代码;
import java.awt.*;
import java.awt.event.*;
public class DrawLine
{
Frame f=new Frame("画线");
public static void main(String [] args)
{
new DrawLine().init();
}
public void init()
{
f.setSize(300,300);
f.setVisible(true);
f.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{
Graphics g=f.getGraphics();
g.setColor(Color.red);
g.drawLine(orgX,orgY,e.getX(),e.getY());
}
});
}
}在上面的画线中,我们发现把它最小化或者最大化后,画的线不见了,这一过程称为:”暴光”,这种情况随时会发生,所以我们要在组件上重绘下.
修改下:
import java.awt.*;
import java.awt.event.*;public class ReDrawLine extends Frame
{
int orgX;
int orgY;
int endX;
int endY;
public static void main(String[] args)
{
ReDrawLine rdl = new ReDrawLine(); rdl.init();
}
public void paint(Graphics g)
{
g.drawLine(orgX,orgY,endX,endY);
}
public void init()
{
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{
endX=e.getX();
endY=e.getY();
Graphics g = getGraphics();
g.setColor(Color.RED);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));//设置文本的字体
g.drawString(orgX+","+orgY,orgX,orgY);
g.drawString(endX+","+endY,endX,endY);//打印鼠标释放时的坐标文本
g.drawLine(orgX,orgY,endX,endY);
}
});
this.setSize(300,300);
this.setVisible(true);
}
} 要知道,显示更新是有AWT线程来控制的,该线程主要负责两种与显示更新相关的情况.
Graphics g = getGraphics();
这句代码后面画一次背景就行例如,画一个白色的框
gc.setBackground(SWT.COLOR_WHITE);
gc.fillRectangle(...)
gc.setBackground(SWT.COLOR_BLACK);
gc.drawLine(a, 500, 300, 300);
谢谢各位的帮忙,在时间最后写上这个就行了,~