当前位置: 代码迷 >> Java相关 >> 求教repaint()问题
  详细解决方案

求教repaint()问题

热度:324   发布时间:2006-12-17 16:59:09.0
求教repaint()问题
import javax.swing.*;
import java.awt.*;
class window extends JWindow{
int length=0;
public window(){
setBounds(200,200,600,400);
setVisible(true);


}
public void paint(Graphics g){
g.setFont(new Font(null,Font.BOLD,20));

g.drawRect(100,100,350,50);
setForeground(Color.black);
try{
Thread.sleep(200);
if(length<=350){
g.setColor(Color.red);
float m=((float)length/350)*100;
String ch="%";
ch=String.valueOf(m).concat(ch);

g.drawString(ch,95,95);
g.fillRect(100,100,length,50);

length+=2;
//super.paint(g);
repaint();

}
}catch(Exception e){}
}
}
public class windows{
public static void main(String[] args){
new window();
}
}
请高手指教如何使提示信息百分数每次重画前把以前的清掉.谢谢!!
搜索更多相关的解决方案: repaint  

----------------解决方案--------------------------------------------------------

调用一下super.paint(g);
放在paint方法里面的第一句


----------------解决方案--------------------------------------------------------
可是加了那句 就一直在闪根本看不清字啊,请斑竹再指教一下,万分感激!谢谢!
----------------解决方案--------------------------------------------------------
import javax.swing.*;
import java.awt.*;
class window extends JWindow{
int length=0;
JLabel n;
JPanel panel=new JPanel();
public window(){
setBounds(200,200,600,400);
n=new JLabel();
panel.add(n);
panel.setBackground(Color.white);
getContentPane().add(panel);
setVisible(true);


}
public void paint(Graphics g){
//super.paint(g);
g.setFont(new Font(null,Font.BOLD,20));

g.drawRect(100,100,350,50);
setForeground(Color.black);
try{
Thread.sleep(200);
if(length<=350){
g.setColor(Color.red);
float m=((float)length/350)*100;
String ch="%";
ch=String.valueOf(m).concat(ch);
n.setText(ch);
//g.drawString(ch,95,95);
g.fillRect(100,100,length,50);

length+=2;

repaint();

}
}catch(Exception e){}
}
}
public class windows{
public static void main(String[] args){
new window();
}
}
我这样实现了一下,就是还有个问题请教,如何让计算出来的百分数只保留两位啊,谢谢指教
----------------解决方案--------------------------------------------------------


repaint();居然在paint里

代码改成这样就OK了:

程序代码:

import javax.swing.*;
import java.awt.*;
class window extends JWindow{
int length=0;
public window(){
setBounds(200,200,600,400);
setVisible(true);

}
public void paint(Graphics g){
super.paint(g);
g.setFont(new Font(null,Font.BOLD,20));

g.drawRect(100,100,350,50);
setForeground(Color.black);
try{

if(length<=350){
g.setColor(Color.red);
float m=((float)length/350)*100;
String ch=\"%\";
ch=String.valueOf(m).concat(ch);

g.drawString(ch,95,95);
g.fillRect(100,100,length,50);

length+=2;
//super.paint(g);
Thread.sleep(200);
repaint();

}
}catch(Exception e){}
}
}
public class windows{
public static void main(String[] args){
new window();
}
}


----------------解决方案--------------------------------------------------------

我这样实现了一下,就是还有个问题请教,如何让计算出来的百分数只保留两位啊,谢谢指教

import java.text.*;
然后在repaint里面把String ch="%";
ch=String.valueOf(m).concat(ch);
改成

程序代码:

DecimalFormat fm =new DecimalFormat(\"##.##\");
String ch =fm.format(m)+\"%\";

就OK


----------------解决方案--------------------------------------------------------
谢谢两位的指教,在两位的帮助下问题以解决
----------------解决方案--------------------------------------------------------