Java gui颜色不加载

时间:2011-10-27 20:11:37

标签: java swing user-interface load uimanager

我为我的程序制作了一个gui并使用了

UIManager.put("Button.background", new Color(0,0,0));   
UIManager.put("JButton.background", new Color(0,0,0));

使按钮显示为黑色。不幸的是,这有时不起作用。如果不修改代码,它将在我运行一次并且不能再工作时起作用。

以下图像是我运行几次后在同一程序中的相同按钮。这种情况大约发生在我运行程序的4次中。

Buttons (左侧按钮正确,右侧是运行时有时会发生的情况)

此外,还有其他一些事情,比如

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...:");
    }
}

3 个答案:

答案 0 :(得分:0)

我通常如何做到这一点是我将一个按钮作为一个单独的JButton变量,然后将其添加到我的面板。然后设置按钮的颜色我使用代码:

myButton.setBackground(Color.BLACK);

这通常可以解决问题。

答案 1 :(得分:0)

在UIManager中进行更改后,请尝试使用以下代码:

SwingUtilities.updateComponentTreeUI(<your_root_ui_componenet>);

答案 2 :(得分:0)

经过几天的不间断试验和错误后,我发现显然在我的程序中MySQL连接导致了问题。如果在程序开始时启动MySQL连接并且颜色变化太大,则会导致某种问题(可能滞后?)并且颜色不会总是加载。也许这是MySQL驱动程序或别的问题,不确定,但要修复它我只是在需要连接时而不是在程序启动时连接到MySQL。

在我提供的示例中,我不确定为什么颜色根本没有加载。