Прозрачный JButton становится светло-голубым при нажатии - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь сделать прозрачные JButtons (с видимым текстом), но когда кнопка нажата, фон становится светло-синим. (Не обращайте внимания на отступы в коде. Это все правильно с отступом)

Я сделал кнопку успешно прозрачной, но боюсь, что проблема может заключаться в том, что я добавляю все JButton в JLabel (фоновое изображение).

    JButton play = new JButton("Play");
    JButton quit = new JButton("Quit");
    JButton instructions = new JButton("Instructions");

    Color invs = new Color(0,0,0,0);

    play.setBackground(invs);
    quit.setBackground(invs);
    instructions.setBackground(invs);

    play.setBorderPainted(false);
    //play.setMargin(new Insets(0,0,0,0));
    play.setRolloverEnabled(false);
    play.setFocusable(false);
    play.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

    instructions.setBorderPainted(false);
    //instructions.setMargin(new Insets(0,0,0,0));
    instructions.setRolloverEnabled(false);
    instructions.setFocusable(false);

   instructions.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

    quit.setBorderPainted(false);
    //quit.setMargin(new Insets(0,0,0,0));
    quit.setRolloverEnabled(false);
    quit.setFocusable(false);
    quit.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));


    instructions.setForeground(Color.WHITE);
    play.setForeground(Color.WHITE);
    quit.setForeground(Color.WHITE);

1 Ответ

1 голос
/ 28 мая 2019
Color invs = new Color(0,0,0,0);

Не используйте прозрачный цвет, чтобы попытаться установить фон любого компонента Swing. Swing не рисует компоненты правильно при использовании прозрачных цветов.

В общем случае вы используете:

setOpaque( false );

когда вам нужна полная прозрачность для любого компонента Swing.

Однако для JButton вам также необходимо:

setContentAreaFilled( false );

для предотвращения окрашивания фона кнопки при нажатии.

Если вам нужна частичная прозрачность, найдите решение Фоны с прозрачностью .

...