Почему setBackground в JButton не работает? - PullRequest
8 голосов
/ 14 февраля 2011

У меня есть следующий простой код:

btn = new JButton();
btn.setBackground(backgroundColor)

Я работал, когда использовал:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");

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

ДОБАВЛЕНО

Мне кажется, что мне нужно использовать getBackground. Но я не знаю как.

Ответы [ 5 ]

12 голосов
/ 18 июля 2013

необходимо установить для Opaque элемента значение true, чтобы цвет был заполнен

     btn = new JButton();
     btn.setOpaque(true);
     btn.setBackground(backgroundColor);
6 голосов
/ 14 февраля 2011

Из setBackground () javadoc:

Это зависит от внешнего вида и чувства, чтобы почитать это свойство, некоторые могут проигнорировать его.

Может быть, ваш LAFпросто проигнорировал это.

4 голосов
/ 20 февраля 2017

добавить btn.setBorderPainted (false)

0 голосов
/ 27 июня 2012

Просто нажмите один раз на кнопку, для которой вы хотите установить фон, а затем перейдите в окно свойств.Там второй вариант будет фоновым.Нажмите на его многоточие, и вы сможете изменить цвет по своему вкусу.Цвет не будет отображаться на кнопке в вашем кадре, пока вы не запустите программу.Вы можете видеть, что кнопка имеет цвет, который вы предпочитаете.

0 голосов
/ 14 февраля 2011

Проблема также может быть связана с тем, как вы создаете кнопку. Проверьте, указан ли код выше:

public class Test extends JApplet{

public void init() 
{  
    java.awt.EventQueue.invokeLater(new Runnable()
    {
        public void run() 
        {   
            setSize(200, 200);
            setLayout(null);

            JPanel p = new JPanel();
            getContentPane().add(p);
            p.setSize(getSize());
            p.setLayout(null);

            JButton b = new JButton("test");
            p.add(b);
            b.setBounds(10, 10, 100, 20);
            b.setBackground(Color.GREEN);

        }
    });
}

}

...