У меня проблема с моим приложением Swing. Если я запускаю свое приложение и помещаю указатель мыши туда, где должна быть кнопка, верхняя метка 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);
}
Извините за эту ошибку. Кажется, ".setBackground (новый цвет (255, 255, 255, 100));" делает глюк.
Сохранил только размер и методы установки фона, и все еще происходит
Sorry for that mistake. It seems ".setBackground(new Color(255, 255, 255, 100));" does the glitch. - то есть нам нужен правильный минимальный воспроизводимый пример с каждым вопросом. И вы до сих пор не опубликовали надлежащего MCVE ". Как мы можем скомпилировать этот код ??? Он состоит из двух частей. Нет метода main () или JFrame.




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