2013-03-14 74 views
0

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

我的解决方案到目前为止实际上是使按钮等于滚动IconImage的大小,但我的问题是,即使我将鼠标悬停,最多20像素,旁边的图像rollOver效果仍然发生。这显然是因为我改变了我的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); 

想象一下,我已经声明的变量我使用的是别的地方。

回答

0

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

+0

这不是我正在寻找的鼠标输入。我正在寻找悬停,每当它悬停时我都无法重新绘制按钮,因为那时我不得不确保在没有鼠标悬停在其上时重新绘制它。 – 2013-03-14 23:24:58

2

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

这会使一切变得更容易。

+0

它我会同意,但是没有足够的动画让用户知道它是一个按钮。我确实希望按钮变大,如果没有已知的方法,我会保持原样。它确实有效,只是那个让我烦恼的小东西。 – 2013-03-14 23:26:10

+0

如果你没有删除按钮的边框,显然它是一个按钮。如果你不喜欢标准边框,你可以直接添加边框到你的图标上,以表明它们代表了一个按钮。 – 2013-03-14 23:29:04