2012-04-09 35 views
1

我是Java的新手,我似乎无法用半透明背景修复此错误。在Gridlayout中导致透明问题的JPanels

每当我更换面板的部件时,它会绘制更改以及窗口的一些随机图片。

的bug的清晰照片

这里是一个完整的工作计划,以便您可以清楚地看到错误的链接。只是给它一分钟来加载我的服务器是慢http://fong.shujindesigns.net

我做了这个小版本的错误,所以你可以测试。

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.event.MouseEvent; 

public class Example1 extends JApplet implements MouseListener { 


    Container Con = getContentPane(); 
    JPanel panel1 = new JPanel(new GridLayout(5, 5, 0, 0)); 
    JPanel[][] panel2 = new JPanel[5][5]; 
    JLabel[] label = new JLabel[25]; 
    Color color; 
    int count = 0; 

    public void init() { 

     int col = 0; 
     int row = 0; 
     color = new Color(0.00f, 0.24f, 0.70f, 0.50f); 

     for (int i = 0; i < 25; i++) { 
      if (col > 4) { 
       col = 0; 
       row++; 
      } 
     label[i] = new JLabel("test"); 
     label[i].addMouseListener(this); 
     panel2[col][row] = new JPanel(); 
     panel2[col][row].add(label[i]); 
     color = new Color(0.00f, 0.24f, 0.70f, 0.20f); 
     panel2[col][row].setBackground(color); 
     label[i].setBorder(BorderFactory.createLineBorder(Color.red)); 
     panel1.add(panel2[col][row]); 
     color = new Color(0.50f, 0.24f, 0.10f, 0.20f); 
     panel1.setBackground(color); 
     col++; 
     } 



     Con.add(panel1); 
     panel1.setOpaque(false); 
     label[5].setText("test2"); 
    } 


    public void mouseEntered(MouseEvent e) { 
    } 

    public void mouseExited(MouseEvent e) { 
    } 

    public void mouseClicked(MouseEvent e) { 
     label[5].setText("Test 3" + count); 
     count++; 
    } 

    public void mousePressed(MouseEvent e) { 
    } 

    public void mouseReleased(MouseEvent e) { 
    } 

    public void mouseMoved(MouseEvent e) { 
    } 

    public void mouseDragged(MouseEvent e) { 
    } 
} 
+0

1)'..extends JApplet的为了便于开发/测试,制作一个混合程序,也可以作为应用程序运行。 2)为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。用代码生成图像。 – 2012-04-09 09:10:28

+0

这是我的SSCCEE,我做了一个编辑,所以这段代码现在可以工作。如果我使用半透明.setbackground而不是图像,该错误仍然存​​在。 对不起,我不知道如何制作混合应用程序? – 2012-04-09 10:01:20

+0

为了今后的问题和编辑(或者更确切地说,我们这些遭受阅读的人),请学习:1)检查邮件发布表单下方的预览是否按照您的预期进行阅读和阅读。 2)如何使用代码格式3)如何插入链接和使用列表点。 - 我只花了最后10分钟清理它,以便格式化和逻辑读取。关于杂种的问题。通过[我](http://stackoverflow.com/search?q=user%3A418556+hybrid)和[trashgod](http://stackoverflow.com/search?q=user %3A230513 +混合)。我们经常发布完整的代码。 – 2012-04-09 10:22:18

回答

0

在的mouseClicked事件中,添加 “重绘()”

如果还是不行,请尝试无效(),重绘()

public void mouseClicked(MouseEvent e) { 
    label[5].setText("Test 3" + count); 
    count++; 

    //revalidate(); 
    repaint(); 

}