为什么我看不到以下输出?
g2.drawString(new Date().toString(), 0, 150);
(我使用g2(全局变量)在内部类的paint方法中使用g)。
提前非常感谢!
公共类 RedRect 扩展 Frame
{
公共静态无效主要(字符串[]参数){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new RedRect();
}
});
}
public static Point p;
RedRect()
{ super("RedRect");
try{
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e){System.exit(0);}});
setSize (800, 600);
add("Center", new CvRedRect());
show();
}
catch(Exception ex){
}
}
}
class CvRedRect extends Canvas
{
Vector<Point> v=new Vector<Point>();
CvRedRect(){
addMouseListener((new MouseAdapter() {
public void mousePressed(MouseEvent evt){
if(v.size()<3){
v.add(evt.getPoint());
}
else{
flag=false;
//v.removeElementAt(0);
//v.add(evt.getPoint());
}
p=evt.getPoint();
repaint();
}
}));
}
Point p=new Point();
boolean flag=true;
int i=0;
public static Graphics g2;
public void paint(Graphics g)
{
try{
g2=g;
Dimension d = getSize();
int maxX = d.width - 1, maxY = d.height - 1;
g.setColor(Color.red);
g.drawRect(0, 0, maxX, maxY);
g.drawString("x ="+p.x, 10, 30);
g.drawString("y = " +p.y, 10, 60);
if(v.size()>2){
g2.drawLine(v.get(0).x,v.get(0).y,v.get(1).x,v.get(1).y);
g2.drawLine(v.get(0).x,v.get(0).y,v.get(2).x,v.get(2).y);
g2.drawLine(v.get(1).x,v.get(1).y,v.get(2).x,v.get(2).y);
Thread t=new Thread(){
public void run(){
try{
while(flag){
///The following comand//////
g2.drawString(new Date().toString(), 0, 150);
///////////////////////////
Thread.sleep(300);
System.out.println (v.size());
Thread.sleep(300);
}
}
catch(Exception ex){
System.out.println (ex.getMessage());
}
}
};
t.start();
}
//System.out.println ("size="+v.size());
if(!flag){
g.clearRect(0,0,maxX,maxY);
Thread.sleep(1000);
g.drawString("FINISH", 5, 30);
flag=true;
}
}
catch(Exception ex){
}
}
}