Java-guikleuren worden niet geladen

Ik heb een gui gemaakt voor mijn programma en gebruikt

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

om de knoppen zwart te laten lijken. Helaas werkt dit soms niet. Zonder de code aan te passen, zal het werken wanneer ik het één keer werk en niet een andere keer zal werken.

De volgende afbeelding is dezelfde knop in hetzelfde programma nadat ik het meerdere malen heb uitgevoerd. Dit gebeurt ongeveer 1 op de 4 keer dat ik het programma uitvoer.

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

Ook andere dingen zoals

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

worden correct geladen. Nooit een probleem gehad en het is tegelijkertijd en hetzelfde formaat geladen.

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
heb ik dat al niet gedaan? De code staat hier ... en ik beschreef het probleem, alles wat je weet is wat ik weet ... :( Ik ben een beginner dus ik weet niet 100% zeker wat dit veroorzaakt.
toegevoegd de auteur Cody, de bron
oh god, ik weet mijn rechts en links niet
toegevoegd de auteur Cody, de bron
Ik heb een voorbeeldcode toegevoegd die de knopkleuren niet laadt. Dit is exact dezelfde die ze ongeveer de helft van de tijd (ik heb eigenlijk geteld) op mijn programma laadt: S. Je kunt zien dat het de achtergrond en andere dingen laadt die op dezelfde manier zijn geschreven.
toegevoegd de auteur Cody, de bron
precies hetzelfde gebeurt met mij met die code, maar is identiek aan de andere die ik gebruik (behalve dat die veel veel groter is omdat er andere delen zijn). En in die ene kleur verandert het slechts de helft van de tijd: S Ik heb geen idee waarom dit dit doet. Ik heb de juiste parameters gebruikt die hier zijn gepost: download.oracle.com/javase/tutorial/uiswing/lookandfeel/& hellip; ... ik heb geen idee wat het probleem is. Ik gebruik Windows (7 64-bit)
toegevoegd de auteur Cody, de bron
Wanneer je "willekeurige" problemen hebt, zorg er dan voor dat je GUI-code wordt uitgevoerd op de draad voor het verzenden van gebeurtenissen door SwingUtilities.invokeLater (...) te gebruiken.
toegevoegd de auteur camickr, de bron
Ik heb dit op mijn MacBook uitgevoerd; de knoppen veranderen nooit van kleur en ik vermoed dat dit door het ontwerp is. Op welk platform ben je?
toegevoegd de auteur Ernest Friedman-Hill, de bron
"alles wat je weet is wat ik weet .." In één antwoord werd gezegd "zorg ervoor dat je GUI-code .." als je een SSCCE , die persoon en anderen mogelijk hebben kunnen controleren door het te bekijken (of te compileren, uit te voeren en vervolgens te bekijken de code). Zoals het is, kunnen we alleen raden raden.
toegevoegd de auteur Andrew Thompson, de bron
U moet een klein, beknopt, werkcodevoorbeeld schrijven dat het probleem toont en hier plaatst. Vaak zal je daarbij zelfs je eigen probleem oplossen.
toegevoegd de auteur Brian Roach, de bron
Hoe is de juiste juiste gegeven dat u wilt dat de knoppen zwart zijn met kleur (0, 0, 0)?
toegevoegd de auteur NickLH, de bron

3 antwoord

Na dagen van non-stop vallen en opstaan, kwam ik tot de conclusie dat blijkbaar in mijn programma de MySQL-verbinding het probleem veroorzaakte. Als de MySQL-verbinding werd gestart aan het begin van het programma en de kleurwijzigingen ook dit waren, veroorzaakte dit een soort probleem (misschien lag?) En laadden de kleuren niet altijd. Misschien is het een probleem met de MySQL-driver of iets anders, niet zeker, maar om het te repareren heb ik het zojuist gemaakt om verbinding te maken met MySQL wanneer het de verbinding nodig had in plaats van bij de start van het programma.

Ik weet niet zeker waarom de kleuren helemaal niet zijn geladen in het voorbeeld dat ik heb gegeven.

0
toegevoegd

Probeer de volgende code te gebruiken nadat u de wijzigingen in de UIManager hebt aangebracht:

SwingUtilities.updateComponentTreeUI();
0
toegevoegd
Ik denk niet dat werkt :( kreeg deze 4 fouten: achtergrond is niet openbaar in java.awt.Component; kan niet worden benaderd vanuit een extern pakket (voor Button.background/JButton.background). updateComponentTreeUI (java.awt.Component) in javax.swing.SwingUtilities kan niet worden toegepast op (java.awt.Color) (voor updateComponentTreeUI voor beide knoppen) :(
toegevoegd de auteur Cody, de bron
oh nee, ik was iets anders aan het doen, nou dat compileert en loopt zonder fouten maar het laadt nog steeds niet de kleuren :(
toegevoegd de auteur Cody, de bron
Dus je deed SwingUtilities.updateComponentTreeUI (batFrame); Vlak voordat u het OptionPane toont>
toegevoegd de auteur Richard Walton, de bron

Hoe ik dit gewoonlijk doe, is dat ik een knop maak als een afzonderlijke JButton-variabele en dat dan aan mijn paneel toevoeg. Om de kleur van de knop in te stellen, gebruik ik de code:

myButton.setBackground(Color.BLACK);

en dat doet meestal het beste.

0
toegevoegd
yah maar het gebruik van het vooraf gemaakte frame en alles afzonderlijk doen zal veel code zijn en enigszins inefficiënt :(
toegevoegd de auteur Cody, de bron
Oh gebruik je netbeans om dit te maken? Als dat zo is, kun je gewoon naar de eigenschappen van je knop gaan en daar verandering in brengen.
toegevoegd de auteur Globmont, de bron