我做了一个applet的小应用程序,我在里输出一字符串,当我在点击一个按钮来改变着这个字符串的时候,页面会把前一个字符串一起显示出来,导致字符串重叠,这个问题该怎么解决呢?

解决方案 »

  1.   

    显示字符串的是TextArea吗,用它的append功能,或者**.setText("");
      

  2.   

    是在paint()里用drawString("",,);显示的。调用update(g)后就会出现这种现象。
      

  3.   

    在paint前先把前面已存在的清掉。试试repaint
      

  4.   

    方法最后加一个super.paint() 看看
      

  5.   

    public void paint(Graphics g) {

    int flag1[] = new int[8];
    for (int i = 0; i < menuNum; i++) {
    if (menuNumber[i] == allFlag) {
    g.setColor(new Color(183, 183, 100));
    g.setFont(new Font("宋体", 0, 20));
    g.drawString(menuName[i], menuX1[i] + 63, menuY1[i] + 120);
    if (flag[i] == 1)
    g.drawImage(getImage(getCodeBase(), "image\\100.gif"),
    menuX1[i] + 18, menuY1[i] + 65, this);
    else
    g.drawImage(getImage(getCodeBase(), "image\\101.gif"),
    menuX1[i] + 18, menuY1[i] + 65, this);
    for (int j = 0; j < 8; j++) {
    if (lampFlag[i][j] == 1) {
    allLampFlag[j] = 1;
    }
    // if (lampFlag[i][j] == 0 && i == 29) {
    // // flag1 = flag1 + 1;
    // // if(flag1 == 28)
    // allLampFlag[j] = 0;
    // }
    int aa = 0;
    if (j == 0 || j == 3)
    aa = 74;
    if (j == 1 || j == 2)
    aa = 59;
    if (j == 4 || j == 7)
    aa = 115;
    if (j == 5 || j == 6)
    aa = 130;
    if (lampFlag[i][j] == 1) {
    g.drawImage(getImage(getCodeBase(), "image\\" + (j + 1)
    + ".gif"), menuX1[i] + 17 + ((j % 4) * 39),
    menuY1[i] + aa, 40, 35, this);
    } else {
    g.drawImage(getImage(getCodeBase(), "image\\"
    + (((j + 1) * 10) + (j + 1)) + ".gif"),
    menuX1[i] + 17 + ((j % 4) * 39),
    menuY1[i] + aa, 40, 35, this);
    }
    if (allLampFlag[j] == 1)
    g.drawImage(getImage(getCodeBase(), "image\\" + (j + 1)
    + ".gif"), 130 + (j * 80), 350, 40, 35, this);
    else
    g.drawImage(getImage(getCodeBase(), "image\\"
    + (((j + 1) * 10) + (j + 1)) + ".gif"),
    130 + (j * 80), 350, 40, 35, this);
    }
    g.setColor(new Color(255, 0, 255));
    g.setFont(new Font("宋体", 0, 20));
    g.drawString("一键关机!!", 350, 335);
    g.drawString("查看未关设备:", 0, 370);
    }
    for (int j = 0; j < 8; j++) {
    if (lampFlag[i][j] == 0) {
    flag1[j] = flag1[j] + 1;
    if (flag1[j] == 29)
    allLampFlag[j] = 0;
    }
    } }
    g.drawString(str, 95 + (strFlag * 80), 330);
    }
    public void update(Graphics g) {
    // Delay(100);
    paint(g);
    // repaint();
    }
    你们看看paint(Graphics g)方法和update(Graphics g)方法就可以了