【问题标题】:JButton how to set roll over icon boundingJButton如何设置翻转图标边界
【发布时间】:2013-03-03 13:04:23
【问题描述】:

所以我有代码可以将 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);

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

【问题讨论】:

    标签: java swing jbutton imageicon


    【解决方案1】:

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

    【讨论】:

    • 我要查找的不是鼠标输入。我正在寻找悬停,我无法在每次悬停时重绘按钮,因为那样我必须确保在没有鼠标悬停时再次重绘它。
    【解决方案2】:

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

    这将使一切变得更容易。

    【讨论】:

    • 我同意,但是没有足够的动画让用户知道它是一个按钮。我确实希望按钮变大,如果没有已知的方法,我会保持原样。它确实有效,只是让我烦恼的一点点。
    • 如果不去掉按钮的边框,很明显它是一个按钮。如果您不喜欢标准边框,您可以直接为您的图标添加边框,以明确它们代表一个按钮。
    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2016-01-21
    • 2013-02-02
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多