這就是我的代碼的樣子:
//color selection (all First column element)
JButton A1 = new JButton("");
A1.setBackground(Color.BLACK);
A1.setContentAreaFilled(false);
A1.setBounds(0, 288, 44, 29);
contentPane.add(A1);
JButton A2 = new JButton("");
A2.setBackground(Color.MAGENTA);
A2.setContentAreaFilled(false);
A2.setBounds(0, 316, 44, 29);
contentPane.add(A2);
無論我如何更改它,顏色和按鈕之間似乎存在不兼容的問題。我嘗試使用setOpaque和其他方法,但仍然沒有奏效。
如何更改 a 的背景顏色JButton?
uj5u.com熱心網友回復:
“問題” - 大多數外觀和感覺通常會在渲染按鈕時忽略背景顏色并在那里應用自己的內部樣式,例如在 MacOS 上。這...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
add(b2);
會產生這個...

在大多數情況下,按鈕默認是透明的(根據我的經驗),所以我們需要做類似...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
b1.setOpaque(true);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
b2.setOpaque(true);
add(b2);
這會產生...

這是因為外觀正在應用它自己的樣式(通過borderPainted屬性)
所以,如果相反,我們做了類似...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
b1.setOpaque(true);
b1.setBorderPainted(false);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
b2.setOpaque(true);
b2.setBorderPainted(false);
add(b2);
我們最終會...

Sooo,從技術上講,我們已經改變了按鈕的背景,但我不了解你,這不是我真正想要的。沒有“簡單”的方法可以更改使用的“邊框”的背景顏色(至少不是我發現的跨平臺獨立的)。“唯一”的解決方案是創建一個新的外觀和感覺委托,它可以為按鈕邊框提供填充顏色并自己渲染它,但如果你想在不同平臺上使用它,那就需要做很多作業(我已經考慮嘗試為 MacOS 制作一個并放棄了,因為 MacOS 必須“與眾不同”)
uj5u.com熱心網友回復:
您需要去掉setContentAreaFilled(false)才能將背景顏色應用于JButton.
JButton A1 = new JButton("Test");
A1.setBackground(Color.BLACK);
A1.setBounds(0, 288, 44, 29);
contentPane.add(A1);
JButton A2 = new JButton("Test2");
A2.setBackground(Color.MAGENTA);
A2.setBounds(0, 316, 44, 29);
contentPane.add(A2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473168.html
上一篇:不重復上一個亂數的亂數
