我正在尝试为一个小游戏建立我的自定义按钮,我使用 JLabel
有这样一个图标:
JLabel playButton = new JLabel("Play!", Images.getWoodImage(), JLabzl.CENTER);
playButton.setFont(Fonts.getBlueberryFont());
playButton.setHorizontalTextPosition(SwingConstants.CENTER);
playButton.setVerticalTextPosition(SwingConstants.CENTER);
playButton.setBounds(230, 400, 300, 100);
问题是,当光标进入按钮时,我希望按钮移动一点;所以我不使用默认布局(我把 this.setLayout(null)
). 因此,对于我的按钮鼠标听筒,我使用以下代码块:
@Override
public void mouseEntered(MouseEvent mouseEvent) {
playButton.setBounds(240, 410, 300, 100); // x + 10 & y + 10
}
@Override
public void mouseExited(MouseEvent mouseEvent) {
playButton.setBounds(230, 400, 300, 100); // reverse the move
}
但它没有按我想要的方式工作,按钮确实移动了,但我在图标后面得到了一个白色矩形:
同样的情况也会发生,当我不移动按钮,只是改变foregroundcolor。
有没有一种方法可以在不使用默认布局的情况下防止这种情况?
2条答案
按热度按时间abithluo1#
尝试
setOpaque(false)
. 还要确保使用.png作为图片,因为.jpg图像总是有白色背景。e4yzc0pl2#
不使用空布局,您可以使用以下方法在面板上居中放置标签:
然后在鼠标中尝试:
这会产生图像移动的效果。