- 更改 JOptionPane 的背景顏色時,無法更改文本的背景顏色,如圖所示?!
包含問題的影像

和
- 另外,如何更改確定按鈕的背景顏色和字體顏色?
注意:我嘗試了很多解決方案,但沒有一個有效。
這是代碼:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
UIManager.put("OptionPane.buttonFont", new Font("Arial", PLAIN, 30));
JOptionPane pane = new JOptionPane("<html><b style=\"color:RED; font-size:20px;\">login successful</b></html>",
JOptionPane.INFORMATION_MESSAGE,
JOptionPane.DEFAULT_OPTION,
ChangeIconJoptionPane("/photo/icons8_Done_70px.png", 60, 60));
getComponents(pane);
pane.setBackground(new Color(32, 139, 223));
JDialog jd = pane.createDialog(this, "Success");
jd.setVisible(true);
}
uj5u.com熱心網友回復:
JOptionPane 由許多組件組成。您需要為所有這些設定背景。
這是遍歷整個組件樹的簡單方法:
private static Stream<Component> walk(Component root) {
Stream<Component> stream = Stream.of(root);
if (root instanceof Container) {
Component[] children = ((Container) root).getComponents();
stream = Stream.concat(
Arrays.stream(children).flatMap(c -> walk(c)), stream);
}
return stream;
}
private void jButton1ActionPerformed(ActionEvent evt) {
JOptionPane pane = new JOptionPane(
"<html><b style=\"color:RED; font-size:20px;\">login successful</b></html>",
JOptionPane.INFORMATION_MESSAGE,
JOptionPane.DEFAULT_OPTION,
ChangeIconJoptionPane("/photo/icons8_Done_70px.png", 60, 60));
Color background = new Color(32, 139, 223);
walk(pane).forEach(c -> c.setBackground(background));
}
但是……在某些外觀和感覺中,無法更改 JButton 的背景顏色。Windows 和 Mac 的系統外觀將忽略 JButton 的背景屬性,并始終使用系統設定呈現按鈕。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/458800.html
