Java GUIの色は読み込まれません

私はプログラムのためのGUIを作って使った

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

ボタンを黒く表示させます。残念ながら、これは時々動作しません。コードを修正することなく、1回実行して別の時間に動かなくても動作します。

次の画像は同じプログラム内の同じボタンで、何回か実行した後です。これは約4回に1回、プログラムを実行します。

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,
そのコードではまったく同じことが起こりますが、他のものと同じものが使用されます(ただし、他の部分があるので、はるかに大きくなります)。そしてその中では、色は半分にしか変わりません:なぜ私はそれをやっているのか分かりません。私はここに掲載されているように、適切なパラメータを使用しました: download.oracle.com/javase/tutorial/uiswing/lookandfeel /… ...何が問題なのかわかりません。私は窓を使用して(7 64ビット)
追加された 著者 Cody,
「ランダム」な問題が発生した場合は、SwingUtilities.invokeLater(...)を使用して、イベントディスパッチスレッドでGUIコードが実行されていることを確認してください。
追加された 著者 camickr,
私はこれを私のMacBookで走らせた。 決して色を変えることのできないボタンがあり、これは意図的なものと思われます。あなたはどんなプラットフォームですか?
追加された 著者 Ernest Friedman-Hill,
あなたが知っていることはすべて私が知っているものです.. ある回答では、「GUIコードを確認してください」と言われました SSCCE 、その人と他の人は、それを見てチェックすることができたかもしれません(またはコンパイルして実行してからコード)。そうである限り、私たちは推測することしかできません。
追加された 著者 Andrew Thompson,
問題を実証し、ここに投稿する、小さくて簡潔で実用的なコード例を書く必要があります。これを行うときに、途中で自分の問題を解決することさえしばしばします。
追加された 著者 Brian Roach,
Color(0、0、0)でボタンを黒にしたい場合は、正しい正しい方法はありますか?
追加された 著者 NickLH,

3 答え

試行錯誤の途中で、私のプログラムで明らかにMySQL接続が問題を引き起こしていたことが分かりました。 MySQLの接続がプログラムの開始時に開始され、色の変更があっても、何らかの問題(おそらく遅れています)が発生し、色が常に読み込まれるとは限りません。たぶん、それはMySQLドライバや他の何かに問題があるかもしれませんが、それを修正するために、プログラム開始時ではなく接続が必要なときにMySQLに接続しました。

私が提供した例で、なぜ色が全くロードされなかったのか分かりません。

0
追加された

UIManagerで変更を加えた後、次のコードを使用してみてください。

SwingUtilities.updateComponentTreeUI();
0
追加された
私はそれが動作しないと思う:(これらの4つのエラーがあります:バックグラウンドはjava.awt.Componentで公開されていません;外部のパッケージ(Button.background /JButton.background) javax.swing.SwingUtilitiesのupdateComponentTreeUI(java.awt.Component)は(両方のボタンのupdateComponentTreeUIの場合)(java.awt.Color)に適用できません。
追加された 著者 Cody,
ああ、私は何か他のことをしていた、それはコンパイルし、エラーなしで実行されても、それでも色を読み込まない:(
追加された 著者 Cody,
だからあなたはSwingUtilities.updateComponentTreeUI(batFrame)をやった。 OptionPaneを表示する直前>
追加された 著者 Richard Walton,

私が普通にやる方法は、別のJButton変数としてボタンを作ってそれを私のパネルに追加することです。次にボタンの色を設定するために、私はコードを使用します:

myButton.setBackground(Color.BLACK);

それは通常、トリックを行います。

0
追加された
yahしかし、事前に作られたフレームを使用し、別々にすべてのことを行うことは、コードが多く、わずかに非効率的です:(
追加された 著者 Cody,
ああ、ネットビーンズを使ってこれを作っていますか?そうであれば、ボタンのプロパティに入り、変更することができます。
追加された 著者 Globmont,