我为我的程序制作了一个gui并使用了
UIManager.put("Button.background", new Color(0,0,0));
UIManager.put("JButton.background", new Color(0,0,0));
使按钮显示为黑色。不幸的是,这有时不起作用。如果不修改代码,它将在我运行一次并且不能再工作时起作用。
以下图像是我运行几次后在同一程序中的相同按钮。这种情况大约发生在我运行程序的4次中。
(左侧按钮正确,右侧是运行时有时会发生的情况)
此外,还有其他一些事情,比如
UIManager.put("control", new Color(15,0,0));
正确加载。从来没有遇到任何问题,它是在同一时间和相同的格式加载。
编辑:这是一个示例代码,其中按钮颜色在背景和其他内容时根本没有加载。它们以相同的方式加载,没有编译或运行错误。
import java.awt.*;
import javax.swing.*;
import javax.swing.UIManager.*;
public class gtst
{
public static void main(String[] args) throws Exception
{
UIManager.put("Button.background", new Color(1,1,1));
UIManager.put("JButton.background", new Color(1,1,1));
UIManager.put("control", new Color(0,0,0));
UIManager.put("text", new Color(255,220,0));
Frame batFrame = new JFrame("nananananna Batman!");
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
String username = JOptionPane.showInputDialog(batFrame, "Enter something...:");
}
}
答案 0 :(得分:0)
我通常如何做到这一点是我将一个按钮作为一个单独的JButton变量,然后将其添加到我的面板。然后设置按钮的颜色我使用代码:
myButton.setBackground(Color.BLACK);
这通常可以解决问题。
答案 1 :(得分:0)
在UIManager中进行更改后,请尝试使用以下代码:
SwingUtilities.updateComponentTreeUI(<your_root_ui_componenet>);
答案 2 :(得分:0)
经过几天的不间断试验和错误后,我发现显然在我的程序中MySQL连接导致了问题。如果在程序开始时启动MySQL连接并且颜色变化太大,则会导致某种问题(可能滞后?)并且颜色不会总是加载。也许这是MySQL驱动程序或别的问题,不确定,但要修复它我只是在需要连接时而不是在程序启动时连接到MySQL。
在我提供的示例中,我不确定为什么颜色根本没有加载。