1
所以我有一些JButtons在背景圖片上,它們被設置爲透明的,所以可以看到背景。然而,當我點擊按鈕時,按下鼠標按鈕時會出現灰色方塊。這看起來很醜,我想知道是否有任何方法來禁用該動畫?由於任何方式來禁用JButton的默認點擊動畫?
所以我有一些JButtons在背景圖片上,它們被設置爲透明的,所以可以看到背景。然而,當我點擊按鈕時,按下鼠標按鈕時會出現灰色方塊。這看起來很醜,我想知道是否有任何方法來禁用該動畫?由於任何方式來禁用JButton的默認點擊動畫?
胡亂猜測......,你可以嘗試JPanel#setOpaque(false)
方法:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PanelOpaqueTest {
public JComponent makeUI() {
JPanel p1 = createPanel();
p1.setBorder(BorderFactory.createTitledBorder("JPanel#setOpaque(false)"));
p1.setOpaque(false);
p1.add(createButton());
JPanel p2 = createPanel();
p2.setBorder(BorderFactory.createTitledBorder("JPanel#setOpaque(true)"));
p2.setOpaque(true);
p2.add(createButton());
JPanel p = new JPanel(new GridLayout(2,1));
p.add(p1);
p.add(p2);
return p;
}
protected JButton createButton() {
JButton b = new JButton("button");
b.setContentAreaFilled(false);
b.setFocusPainted(false);
//b.setBorderPainted(false);
//b.setOpaque(false);
return b;
}
protected JPanel createPanel() {
return new JPanel() {
@Override public void paintComponent(Graphics g) {
g.setColor(new Color(100,100,100,100));
g.fillRect(0,0,getWidth(),getHeight());
}
};
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new PanelOpaqueTest().makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
aaach現在我可以看到謝謝 – mKorbel
什麼是外觀及感覺你正在使用? – aterai
@aterai請問這個問題是基於一些圖形缺失或錯誤或:-),我無盡的好奇心 – mKorbel
對不起,我是一種新的搖擺,你是什麼意思的外觀和感覺? – user2438514