2015-03-06 2 views
0

У меня есть назначение java, в котором мне нужно иметь цвет фона изменения графического интерфейса в зависимости от выбранных пользователем переключателей, отображающих разные цвета. В моей программе есть JFrame, чтобы держать все, а затем 3 JPanels (1 область команд, 1 сетка Radio Button, 1 текстовое поле результата) внутри этого кадра.Как изменить цвет фона jPanel, содержащего JRadioButtons?

В настоящее время мой исполнитель событий устанавливает цвет фона с помощью этого оператора: getContentPane(). SetBackground (Color.decode (colorMap.get (btn.getName())));

Фон для JFrame и двух из трех панелей успешно изменяется на правильный цвет, но панель с JRadioButtons не изменится вообще!

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

У меня недостаточно репутации, чтобы опубликовать фотографию, но если вы заметили, о чем я говорю, помогите мне, и я могу написать вам скриншот.

Спасибо!

ответ

4

Необходимо дополнительно установить все JRadioButtons.setOpaque(false).

Пример с одним JRadioButton непрозрачной и один непрозрачной:

import java.awt.BorderLayout; 
import java.awt.Color; 

import javax.swing.BoxLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 


public class XFrame 
    extends JFrame 
{ 
    public XFrame(String title) 
    { 
     super(title); 

     setDefaultCloseOperation(EXIT_ON_CLOSE); 

     setLayout(new BorderLayout()); 

     JRadioButton b1 = new JRadioButton("Non opaque button"); 
     // button must not be opaque 
     b1.setOpaque(false); 

     // this button is opaque and does not use the background color of the frame 
     JRadioButton b2 = new JRadioButton("Opaque button"); 

     JPanel p1 = new JPanel(); 
     // panel must be non opaque also 
     p1.setOpaque(false); 

     p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS)); 
     p1.add(b1); 
     p1.add(b2); 

     add(p1, BorderLayout.CENTER); 

     getContentPane().setBackground(Color.red); 

     setSize(200, 200); 
    } 

    public static void main(String[] args) 
    { 
     XFrame frame = new XFrame("Test"); 
     frame.setVisible(true); 
    } 

} 
+0

Спасибо так много. Я пробовал что-то подобное раньше, но я создал массив JRadioButton [] и изначально пытался установить всю непрозрачную коллекцию. Я переместил «.setOpaque (false)» в цикл for, в котором я фактически создавал кнопки, и это решило проблему! Теперь мне нужно поиграть с цветовой схемой, потому что некоторые темные цвета скрывают текст. Еще раз спасибо! – SirChill88

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