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();
}
}
请高手指教如何使提示信息百分数每次重画前把以前的清掉.谢谢!!
----------------解决方案--------------------------------------------------------
调用一下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
----------------解决方案--------------------------------------------------------
谢谢两位的指教,在两位的帮助下问题以解决
----------------解决方案--------------------------------------------------------