JButton如何设置翻转图标边界

时间:2013-03-14 23:04:11

标签: java swing jbutton imageicon

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

到目前为止,我的解决方案实际上是使按钮等于在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);

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

2 个答案:

答案 0 :(得分:2)

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

这将使一切变得更容易。

答案 1 :(得分:0)

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