JLabel также отображается на кнопке

У меня проблема с моим приложением Swing. Если я запускаю свое приложение и помещаю указатель мыши туда, где должна быть кнопка, верхняя метка JLabel переходит на кнопку.

Это изображение показывает мою проблему

JLabel также отображается на кнопке

    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    defFont = new Font("Impact", Font.PLAIN, 32);

    JPanel mainpanel = new JPanel();
    mainpanel.setLayout(new BorderLayout());
    mainpanel.setPreferredSize(new Dimension(480, 320));
    mainpanel.setBackground(Color.white);

    JLabel title = new JLabel("-----Title-----");
    title.setFont(defFont);
    title.setHorizontalAlignment(JLabel.CENTER);

    JLabel footer = new JLabel("Footer");
    footer.setFont(defFont.deriveFont(Font.TRUETYPE_FONT, 14f));

    JPanel midPanel = new JPanel();
    midPanel.setBackground(Color.GRAY);
    midPanel.setLayout(new GridBagLayout());

    JButton startGameButton = new JButton("New Game");
    applySettings(startGameButton);

    midPanel.add(startGameButton);

    mainpanel.add(title, BorderLayout.NORTH);
    mainpanel.add(midPanel, BorderLayout.CENTER);
    mainpanel.add(footer, BorderLayout.PAGE_END);

    add(mainpanel);
    pack();
    setVisible(true);

Обновлено: забудьте вставить метод applySettings. На кнопке есть какой-то стиль, возможно, проблема в функции, которая делает ее прозрачной.

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

private void applySettings(JButton button)
{
    button.setPreferredSize(new Dimension(200, 100));
    button.setFont(defFont.deriveFont(Font.TRUETYPE_FONT, 24f));
    button.setBorder(BorderFactory.createLineBorder(Color.black, 2, true));

    button.setFocusPainted(false);
    button.setBackground(new Color(255, 255, 255, 100));
    button.setContentAreaFilled(true);
}

Разместите свой минимальный воспроизводимый пример, демонстрирующий проблему. То есть мы должны иметь возможность копировать / вставлять / компилировать / тестировать код. Например, мы не знаем, что делает applySettings(...). Я предлагаю, если код не имеет отношения к проблеме, закомментируйте код и повторите попытку.

camickr 03.05.2018 23:13

Извините за эту ошибку. Кажется, ".setBackground (новый цвет (255, 255, 255, 100));" делает глюк.

user3820214 03.05.2018 23:29

Сохранил только размер и методы установки фона, и все еще происходит

user3820214 03.05.2018 23:37
Sorry for that mistake. It seems ".setBackground(new Color(255, 255, 255, 100));" does the glitch. - то есть нам нужен правильный минимальный воспроизводимый пример с каждым вопросом. И вы до сих пор не опубликовали надлежащего MCVE ". Как мы можем скомпилировать этот код ??? Он состоит из двух частей. Нет метода main () или JFrame.
camickr 04.05.2018 00:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
40
1

Ответы 1

Нашел в сети решение это, и оно решает проблему.

Ссылка: Фоны с прозрачностью

Другие вопросы по теме