2012-04-09 55 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(); 

}