Java gui colors не завантажуються

Я зробив gui для своєї програми і використовував

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

щоб зробити кнопки чорними. На жаль, це іноді не працює. Не змінюючи код, він буде працювати, коли я запускаю його один раз, і не буде працювати інший раз.

Наступне зображення - одна і та ж кнопка в тій самій програмі після декількох разів, коли я її запускав. Це відбувається приблизно 1 в 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/& hellip; ... Я не знаю, що таке проблема. Я використовую Windows (7 64-розрядних)
додано Автор Cody, джерело
Кожного разу, коли у вас є "випадкові" проблеми, переконайтеся, що ваш код GUI виконується в темі відправлення події, використовуючи SwingUtilities.invokeLater (...).
додано Автор camickr, джерело
Я побіг це на моєму MacBook; кнопки ніколи не змінюють колір, і я підозрюю, що це за дизайном. Яка платформа у вас?
додано Автор Ernest Friedman-Hill, джерело
"все, що ви знаєте, це те, що я знаю .." У одній відповіді сказано: "переконайтеся, що ваш графічний інтерфейс ..." . Якщо ви розмістили SSCCE , ця особа та інші користувачі, можливо, змогли перевірити, переглянувши це (або склавши його, запустивши його, а потім подивившись на код). Як це, ми можемо лише здогадуватися.
додано Автор Andrew Thompson, джерело
Вам потрібно написати невеликий, лаконічний, робочий приклад коду, який демонструє проблему і публікує його тут. Часто при цьому ви навіть вирішите свою власну проблему на цьому шляху.
додано Автор Brian Roach, джерело
Як правильно правильно вказати, що ви хочете, щоб кнопки були чорними за кольором (0, 0, 0)?
додано Автор NickLH, джерело

3 Відповіді

Після кількох днів непробного проб та помилок, я зрозумів, що, мабуть, в моїй програмі MySQL-зв'язок викликав проблему. Якщо з'єднання MySQL було ініційовано в початок програми, і зміни кольорів теж спричинили якусь проблему (можливо, відставання?), І кольори не завжди завантажуються. Може бути, це проблема з драйвером MySQL або щось інше, не впевнений, але щоб виправити це, я просто підключився до MySQL, коли йому потрібно було з'єднання, а не на початку програми.

Я не знаю, чому кольори не завантажуються взагалі в прикладі я.

0
додано

Спробуйте використати такий код після внесення змін у UIManager:

SwingUtilities.updateComponentTreeUI();
0
додано
Я не думаю, що працює :( ці 4 помилки: фон не є відкритим у java.awt.Component; неможливо отримати доступ з зовнішнього пакунка (для Button.background /JButton.background). updateComponentTreeUI (java.awt.Component) у javax.swing.SwingUtilities не можна застосувати до (java.awt.Color) (для updateComponentTreeUI для обох кнопок) :(
додано Автор Cody, джерело
о ні, я робив щось ще, добре, що він компілює і працює без помилок, але він все ще не завантажує кольори :(
додано Автор Cody, джерело
Таким чином, ви зробили SwingUtilities.updateComponentTreeUI (batFrame); Незадовго до показу OptionPane>
додано Автор Richard Walton, джерело

Як я зазвичай це роблю, я створюю кнопку як окрему змінну JButton, а потім додаю її до своєї панелі. Потім, щоб встановити колір кнопки я використовую код:

myButton.setBackground(Color.BLACK);

і це зазвичай робить трюк.

0
додано
yah але його використовуюча зроблена рамка та робляча кожна річ окремо буде дуже багато коду та трохи неефективна :(
додано Автор Cody, джерело
О, ви використовуєте NetBeans, щоб зробити це? Якщо так, то ви можете просто перейти до властивостей своєї кнопки і змінити це.
додано Автор Globmont, джерело
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників