0

所以我有代码可以设置一个JButton 等于一个ImageIcon。同样,当我将鼠标悬停在图像上时,它会显示一个新的 ImageIcon,但我拥有它的方式是,新的 IconImage 实际上比原来的要大一点。现在的问题是它仍然存在于按钮的范围内,所以假设我的按钮大小是 100、250 并且翻转 IconImage 是 120、270 那么问题是每边的 20 个像素被切断。

到目前为止,我的解决方案实际上是使按钮等于翻转 IconImage 的大小,但我的问题是,即使我将鼠标悬停在最多 20 像素的图像旁边,翻转效果仍然会发生。现在这显然是因为我更改了 JButton 的边界。

如果有人有任何他们能想到的解决方案,我将不胜感激。

这是我正在做的一个例子:

singlePlayerButton = new ImageIcon("GUIImages\\singlePlayerButton.png");
rollOverSinglePlayerButton = new ImageIcon("GUIImages\\rollOverSinlgePlayerButton.png");
btnSinglePlayer = new JButton(singlePlayerButton);
btnSinglePlayer.setOpaque(false);
btnSinglePlayer.setContentAreaFilled(false);
btnSinglePlayer.setBorderPainted(false);
btnSinglePlayer.setFocusPainted(false);
btnSinglePlayer.setBounds(320, 25, 275, 130);
btnSinglePlayer.setRolloverIcon(rollOverSinglePlayerButton);
mainMenu.add(btnSinglePlayer);

想象一下,我已经声明了我在其他地方使用的变量。

4

2 回答 2

2

我只是确保两个图标的大小完全相同。如有必要,为较小的边框添加透明边框。

这将使一切变得更容易。

于 2013-03-14T23:19:17.510 回答
0

您可以将“MouseListener”实例添加到您的按钮并实现“mouseEntered”方法。然后,您可以更改您的按钮(bouds、image、...)并在必要时在屏幕上重新绘制它。有关更多信息,请参阅 JButton 和 MouseAdapter 类的 javadoc。

于 2013-03-14T23:18:29.893 回答