問題是按鈕報告是完全不透明的,而實際上它不是(由於部分透明色)
but.setOpaque(false);
BTW:正如你看到的,我改變了字段名,以符合Java命名公約:-)
編輯
arggghh ..錯過了,對不起。需要檢查什麼,我們做SwingX,從我的頭頂,我會說,你需要重寫paintComponent和處理的背景畫自己,像
/**
* @inherited <p>
*/
@Override
protected void paintComponent(Graphics g) {
if (!isOpaque() && getBackground().getAlpha() < 255) {
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
}
super.paintComponent(g);
}
沒有嘗試,不過,也許是「越來越不透明」又回來了與這樣..明天會回來
編輯2
還好,檢查 - 編輯的代碼工作正常。因此,在總結:用半透明背景組件
- 必須報告說,他們不是不透明不要混淆默認繪畫機制
- 必須與接管背景畫,並與背景顏色自行填充(SwingX JXPanel網絡連接不通過一個alpha屬性的明確支持)
爲了您的方便,這裏有一個小的可運行與不正確/正確的背景並排側
public class TransparentButton {
public TransparentButton() {
JWindow incorrectOpaque = createWindow("incorrect opaque", true);
incorrectOpaque.setLocation(600, 600);
incorrectOpaque.setVisible(true);
JWindow correctOpaque = createWindow("correct opaque", false);
correctOpaque.setLocation(800, 600);
correctOpaque.setVisible(true);
}
private JButton createButton(final boolean opaque) {
JButton but = new JButton("Testing") {
/**
* @inherited <p>
* Overridden to take over background painting with
* transparent color.
*/
@Override
protected void paintComponent(Graphics g) {
if (!isOpaque() && getBackground().getAlpha() < 255) {
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
}
super.paintComponent(g);
}
};
but.setBackground(new Color(0, 0, 0, 100));
but.setForeground(new Color(70, 155, 255));
but.setOpaque(opaque);
return but;
}
private JWindow createWindow(String text, boolean opaque) {
JWindow window = new JWindow();
JButton but = createButton(opaque);
window.add(but);
window.add(new JLabel(""), BorderLayout.SOUTH);
window.setOpacity(0.5f);
window.setBackground(new Color(0, 0, 0, 0));
window.setSize(new Dimension(200, 100));
return window;
}
public static void main(String[] Args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TransparentButton();
}
});
}
@SuppressWarnings("unused")
private static final Logger LOG = Logger.getLogger(TransparentButton.class
.getName());
}
爲了儘快提供更好的幫助,請發佈[SSCCE](http://pscode.org/sscce.html)。 –
Haase和Guy購買[Filthy Rich Clients](http://filthyrichclients.org/)。它涉及到所有需要做透明組件然後一些的細節。在Java Swing程序員的所有**偉大的書中。 –