Изображение и компоненты JPanel

Я хотел бы иметь изображение на своих JPanel, а также иметь такие компоненты, как JSlider и JRadioButton, на моем JPanel. Я унаследовал класс от JPanel и переопределил метод paintComponent, как вы видите. Это хороший способ разместить изображение на JPanel.

public void paintComponent(Graphics g)
{
    /*create image icon to get image*/
    ImageIcon imageicon = new ImageIcon(imageFile); //getClass().getResource(imageFile)
    Image image = imageicon.getImage();

    /*Draw image on the panel*/
    super.paintComponent(g);

    if (image != null)
        g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}

Однако у меня есть проблемы. Когда я добавляю в свой ImagePanel такие компоненты, как JSlider, JRadioButton или другой JPanel; фон этого компонента остается по умолчанию, а не фоновое изображение. Я не знаю, как установить это изображение в качестве фона для этих компонентов. пожалуйста, направь меня.

С уважением


person sajad    schedule 01.02.2011    source источник


Ответы (3)


вы должны установить для непрозрачных свойств другого компонента значение false.

jRadioButton.setOpaque(false);

Например :

ImagePanel с RadioButton на нем.

person mehdi shahdoost    schedule 01.02.2011

jRadioButton.setOpaque(false);

Будет работать для многих стилей, но если вы хотите, чтобы он работал с Nimbus, вы также должны установить цвет фона на прозрачный:

jRadioButton.setBackground(new Color(0,0,0,0));

Дополнительные сведения см. В этом вопросе.

person finnw    schedule 01.02.2011

Разве setOpaque(false) для всех остальных компонентов не помогает?

person maaartinus    schedule 01.02.2011