Цвета интерфейса Java не загружаются - PullRequest
0 голосов
/ 28 октября 2011

Я сделал графический интерфейс для своей программы и использовал

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

, чтобы кнопки выглядели черными.К сожалению, иногда это не работает.Без изменения кода он будет работать, когда я запускаю его один раз и не буду работать в другой раз.

На следующем изображении та же кнопка в той же программе после того, как я несколько раз ее запускал.Это происходит примерно 1 из 4 раз, когда я запускаю программу.

Buttons (левая кнопка правильная, а правая - то, что иногда происходит во время работы)

Кроме того, другие вещи, такие как

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

Ответы [ 3 ]

0 голосов
/ 29 октября 2011

Попробуйте использовать следующий код после внесения изменений в UIManager:

SwingUtilities.updateComponentTreeUI(<your_root_ui_componenet>);
0 голосов
/ 03 ноября 2011

После нескольких дней безостановочных проб и ошибок я понял, что, по-видимому, в моей программе проблема с подключением к MySQL. Если соединение MySQL было инициировано в начале программы, и изменения цвета были слишком велики, это вызывало какую-то проблему (возможно, задержку?), И цвета не всегда загружались. Может быть, это проблема с драйвером MySQL или чем-то еще, не уверен, но чтобы исправить это, я просто подключил его к MySQL, когда ему было нужно соединение, а не при запуске программы.

Я не уверен, почему цвета не загружались вообще в приведенном мною примере.

0 голосов
/ 29 октября 2011

Как обычно, я делаю кнопку как отдельную переменную JButton, а затем добавляю ее на панель. Затем, чтобы установить цвет кнопки, я использую код:

myButton.setBackground(Color.BLACK);

и это обычно помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...