2013-04-20 5 views
-3

Итак, я должен создать графический интерфейс, который подбирает список имен цветов в качестве переключателей. Когда вы нажимаете кнопку, он меняет фон на этот цвет. Проблема в том, что когда я нажимаю кнопки, это не меняет цвет. Это мой слушатель:Как использовать прослушиватель для изменения цвета фона JFrame (Java)?

ActionListener buttons = new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     setBackground(Color.decode("#" + getColor())); 
     repaint(); 
    } 
}; 

GetColor() возвращает 6-значный код шестнадцатеричном для цвета выбранного. Мой фактический код довольно длинный и утомительный (у меня нет возможности создавать компоненты GUI через циклы, и у него есть 20 кнопок), но я могу опубликовать его по запросу. Проблема, я уверен, лежит в блоке кода, который я опубликовал.

+0

Вы пытаетесь изменить цвет JFrame контейнера? – kamil

+0

Я пытаюсь изменить цвет фона окна, в котором отображаются радиокнопки. – user2302019

+1

* «Мой фактический код довольно длинный» * Ваш (длинный) код не имеет значения, но для лучшей помощи раньше, отправьте сообщение [SSCCE] (http://sscce.org/). Он не должен принимать более 20-50 строк кода, чтобы включить этот метод в SSCCE. –

ответ

4

Просто используйте:

getContentPane().setBackground(Color.decode("#" + getColor())); 
+0

Я пробовал getContentPane(), нет такой удачи. – user2302019

+2

У вас есть ваш «ActionListener», зарегистрированный вашей кнопкой? Опубликовать сокращенную [sccee] (http://sscce.org/) версию вашего кода – Reimeus

+0

Я протестировал это предложение и нашел, что он работает. Обратите внимание, что 'decode()' требует, чтобы строка 'full-length', подобная 'a0b0c0', а не общая аббревиатура' abc', работала правильно. –

Смежные вопросы