-1

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

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

使按钮显示为黑色。不幸的是,这有时不起作用。在不修改代码的情况下,它会在我运行一次时运行,而在另一次运行时不会运行。

下图是我多次运行后同一个程序中的同一个按钮。在我运行程序的 4 次中,这种情况大约有 1 次发生。

纽扣 (左边的按钮是正确的,右边的按钮是运行时有时会发生的)

另外,其他的东西,比如

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

3 回答 3

0

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

myButton.setBackground(Color.BLACK);

这通常可以解决问题。

于 2011-10-29T00:21:20.543 回答
0

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

SwingUtilities.updateComponentTreeUI(<your_root_ui_componenet>);
于 2011-10-29T00:24:41.353 回答
0

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

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

于 2011-11-02T20:44:07.577 回答