Java gui颜色不加载

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

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

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

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

Buttons (left button is correct and the right one is what sometimes happens while running)

还有,像其他的东西

UIManager.put("control", new Color(15,0,0));

正确加载。从来没有遇到任何问题,它是在同一时间和相同的格式加载。

EDIT: Here's a sample code where the button colors aren't loading at all while the background and other things are. They are loaded the same exact way and there are no compilation or run errors.

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...:");
    }
}
1
我不是那样做的吗?代码就在那里......我描述了问题,你所知道的一切就是我所知道的...... :(我是一个乞丐,所以我不能100%确定导致这种情况发生的原因。
额外 作者 Cody,
天啊,我不知道我的左右
额外 作者 Cody,
我添加了一个示例代码,它甚至没有加载按钮颜色。这是完全相同的一个加载它们大约一半的时间(我实际计算)在我的程序:S。您可以看到它加载了背景和其他以相同方式编写的内容。
额外 作者 Cody,
我用这个代码完全一样,但它与我正在使用的另一个相同(除了一个更大,因为还有其它部分)。在那一个中​​它只改变颜色的一半时间:S我不知道它为什么这样做。我使用了正确的参数: download.oracle.com/javase/tutorial/uiswing/lookandfeel /… ...我不知道问题是什么。我正在使用Windows(7 64位)
额外 作者 Cody,
每当遇到“随机”问题时,请确保使用SwingUtilities.invokeLater(...)在Event Dispatch Thread上执行GUI代码。
额外 作者 camickr,
我在MacBook上运行了这个;按钮从不改变颜色,我怀疑这是设计的。你在什么平台上?
额外 作者 Ernest Friedman-Hill,
“你所知道的一切都是我所知道的......”在一个回复中,有人说“确保你的GUI代码..”如果你发布了 SSCCE ,该人和其他人可能已经能够通过查看(或编译,运行它然后查看)进行检查代码)。事实上,我们只能猜测。
额外 作者 Andrew Thompson,
您需要编写一个小巧,简洁,有效的代码示例来演示问题并在此处发布。通常在执行此操作时,您甚至会在此过程中解决自己的问题。
额外 作者 Brian Roach,
如果您希望按钮为带有颜色(0,0,0)的黑色,那么正确的如何正确?
额外 作者 NickLH,

3 答案

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

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

0
额外

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

SwingUtilities.updateComponentTreeUI();
0
额外
我认为不起作用:(得到这4个错误: background在java.awt.Component中不公开;无法从外部包访问(对于Button.background /JButton.background)。 javax.swing.SwingUtilities中的updateComponentTreeUI(java.awt.Component)不能应用于(java.awt.Color)(对于两个按钮的updateComponentTreeUI):(
额外 作者 Cody,
哦不,我正在做其他事情,以及它编译和运行没有错误但它仍然没有加载颜色:(
额外 作者 Cody,
所以你做了SwingUtilities.updateComponentTreeUI(batFrame);就在您展示OptionPane之前>
额外 作者 Richard Walton,

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

myButton.setBackground(Color.BLACK);

而这通常会成功。

0
额外
是啊,但它使用预先制作的框架和分开做每件事将是很多代码和效率稍低:(
额外 作者 Cody,
你用netbeans来制作这个吗?如果是这样,那么您可以进入按钮的属性并进行更改。
额外 作者 Globmont,