首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于Graphics2D中drawString(String str)重叠有关问题

2012-06-08 
求助:关于Graphics2D中drawString(String str)重叠问题由于一个项目要在一个位置交替显示文字,现在遇到的

求助:关于Graphics2D中drawString(String str)重叠问题
由于一个项目要在一个位置交替显示文字,现在遇到的问题是当用drawString时当第二次在此处画字符串时就会和第一次重叠。我想要的效果是:当第二次画时第一次画的字消失(也就是说第一次画的字不能影响第二次画的)。请问如何实现。

以下为代码部分

Java code
import java.awt.*;import java.io.FileInputStream;import java.util.Scanner;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.JOptionPane;/** * 启动闪现屏幕 * * @author dll<dll at zzti> */public class Check_Frm {    static String message = "初始化中……";    static int sleeptime = 1000;    public Check_Frm() {        Splash splash = new Splash();        //这里写初始化的内容        message = "千山鸟飞绝";        splash.drawInfo(message);        sleep();        message = "万径人踪灭";        splash.drawInfo(message);        sleep();        /**        *    此处省略代码为启动主窗体,当启动时闪屏自动消失        */    }    void sleep() {//暂停        try {            Thread.sleep(sleeptime);        } catch (InterruptedException ex) {            Logger.getLogger(Check_Frm.class.getName()).log(Level.SEVERE, null, ex);        }    }    public static void main(String[] args) {//主函数        new Check_Frm();    }}class Splash {    SplashScreen splash = SplashScreen.getSplashScreen();    final Graphics2D g2 = splash.createGraphics();    final Color color = g2.getBackground();    final Dimension size = splash.getSize();    int i = 0;    public void drawInfo(String info) {        mess = info;        g2.setPaintMode();        g2.setColor(Color.black);        g2.setFont(new Font("华文行楷", Font.PLAIN, 15));        g2.drawString(info, 0, 10);//每次都从这个位置(0,10)开始画字符串        splash.update();    }}



[解决办法]
那要重绘该图片(背景),控制好的话可以只重绘这一局部区域,然后再写新字上去。
[解决办法]
另一种做法是,把图片放在底层JPanel背景,你画的时候画在上层的JPanel中,这样就不需要自己去重绘背景了。注意上层的JPanel需要设置透明。

热点排行