import java.awt.*;
import java.applet.*;
import java.awt.event.*;public class Lines extends Applet {
int px,py,px1,py1; public Lines(){
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
drawline(e.getX(),e.getY());
}
}); } public void paint(Graphics g){
g.drawString("whyin ok!",20,20);
g.drawLine(40,40,100,40);
System.out.println("ok");
} public void drawline(int x,int y){
Graphics g = getGraphics();
g.drawLine(x,y,x+100,y);
}
}一最小化,线就没了,我怎么样让已经存在的线,最小化时后,还存在呀!
import java.applet.*;
import java.awt.event.*;public class Lines extends Applet {
int px,py,px1,py1; public Lines(){
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
drawline(e.getX(),e.getY());
}
}); } public void paint(Graphics g){
g.drawString("whyin ok!",20,20);
g.drawLine(40,40,100,40);
System.out.println("ok");
} public void drawline(int x,int y){
Graphics g = getGraphics();
g.drawLine(x,y,x+100,y);
}
}一最小化,线就没了,我怎么样让已经存在的线,最小化时后,还存在呀!
系统就会自动调用repaint()方法来重绘Applet界面
缺省状态下repaint()方法是清空当前区域之后再调用paint()方法
如果想那些线还存在
就需要重新定义repaint()方法
分析的很好
系统就会自动调用repaint()方法来重绘Applet界面,
repaint()方法会调用update()方法,
然后repaint()方法会调用paint()方法。
所以你不必重载repaint()也不必重载update()方法,
只要记住鼠标点击过的点(比如保存在一个Vector中),
然后在paint()方法中画出点击过的线即可。
呵呵~~
import java.applet.*;
import java.awt.event.*;public class Lines extends Applet {
int px,py,px1,py1; public Lines(){
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
// drawline(e.getX(),e.getY());
px = e.getX();
py = e.getY();
drawline();
}
});
}
public void drawline(){
Graphics g = getGraphics();
g.drawLine(px,py,px+100,py);
} public void update(Graphics g){
System.out.println("update");
}
public void paint(Graphics g){
//Graphics g = getGraphics();
//g.drawLine(px,py,px+100,py);
}
}不能解决啊,各位测试一下,还是和以前一样啊!!谢谢各位了
就内存开销而言还是用xhh的方法保存点击过的点更好,如果你不是要画特别复杂的图案的话。import java.awt.*;
import java.applet.*;
import java.awt.event.*;public class Lines extends Applet {
int px,py,px1,py1;
Image img;
Graphics gra; public Lines(){
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
px = e.getX();
py = e.getY();
drawline();
repaint();
}
});
}
public void drawline(){
gra.drawLine(px,py,px+100,py);
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
if (img == null) {
img = createImage(1024,768);
gra = img.getGraphics();
}
g.drawImage(img, 0, 0, null);
}
}
import java.applet.*;
import java.awt.event.*;
import java.awt.image.*;public class Lines extends Applet {
int px,py,px1,py1;
BufferedImage bufImg = null; public void init()
{
bufImg = new BufferedImage((int)getSize().getWidth(),
(int)getSize().getHeight(),BufferedImage.TYPE_INT_RGB);
}
public Lines(){
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
px1 = e.getX();
py1 = e.getY();
drawline();
repaint();
}
public void mousePressed(MouseEvent e){
px = e.getX();
py = e.getY();
}
});
}
public void drawline(){
Graphics g = bufImg.createGraphics();
g.setColor(Color.red);
g.drawLine(px,py,px1,py1);
} public void paint(Graphics g){
g.drawImage(bufImg,0,0,Color.gray,this);
}
}