把c.repaint()去掉.把Paint()中的内容移到mouseReleased中,我改的.import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame{
private JLabel statusBar;
private Container c;
private int x1,y1,x2,y2;
public Test(){
super("Mouse Test");
c = getContentPane();
statusBar = new JLabel();
c.add(statusBar,BorderLayout.SOUTH);
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e){
x2=e.getX();
y2=e.getY();
Graphics g = Test.this.getGraphics();
g.drawRect(((x2>=x1)?x1:x2),((y2>=y1)?y1:y2),Math.abs(x2-x1),Math.abs(y2-y1)); statusBar.setText("the area is:"+(Math.abs(x2-x1)*Math.abs(y2-y1)));
// c.repaint();
}
});
setSize(400,400);
show();
}
public void paint(Graphics g){
}
public static void main(String args[]){
Test app = new Test();
app.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame{
private JLabel statusBar;
private Container c;
private int x1,y1,x2,y2;
public Test(){
super("Mouse Test");
c = getContentPane();
statusBar = new JLabel();
c.add(statusBar,BorderLayout.SOUTH);
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e){
x2=e.getX();
y2=e.getY();
Graphics g = Test.this.getGraphics();
g.drawRect(((x2>=x1)?x1:x2),((y2>=y1)?y1:y2),Math.abs(x2-x1),Math.abs(y2-y1)); statusBar.setText("the area is:"+(Math.abs(x2-x1)*Math.abs(y2-y1)));
// c.repaint();
}
});
setSize(400,400);
show();
}
public void paint(Graphics g){
}
public static void main(String args[]){
Test app = new Test();
app.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货