java - 在 Java Swing 中创建一个不可见的按钮

标签 java user-interface swing button

我在 Java Swing GUI 上看到过很多次看起来像图像的按钮,直到鼠标滑过它们。他们似乎没有填充他们的内容区域。当鼠标滑过它们时,内容区域被填满,但按钮看起来好像鼠标没有悬停在它上面。这方面的一个例子是用于激活 SwingSet2 中每个演示的按钮工具栏。

这种效果怎么可能?

编辑:以下是说明我的问题的图片:

默认状态
button_default.png

悬停状态
button_hover.png

点击( Activity )状态
button_active.png

这些是在 Vista 上使用 Window Look&Feel。这些图像是从 SwingSet2 演示工具栏捕获的。

谢谢!

最佳答案

这是一个简单的方法。此代码将向 JButton 添加调整大小的图像并删除按钮的边框和填充区域,除非鼠标位于按钮上。

 public JPanel hooverImages(){
        JPanel panel;
        ImageIcon icon;
        Image img;
        JButton button;
        String name = "image"


        icon = new ImageIcon(getClass().getResource("/gui/resources/"
                + name+".png"));
        img = icon.getImage(); 

        button = new JButton(new ImageIcon(img.getScaledInstance(30, 30
                , Image.SCALE_SMOOTH))); //adds resized image to button.
        button.setBounds(20, 0, 40, 40);
        button.setContentAreaFilled(false); //this is the piece of code you needed
        button.addMouseListener(new MouseAdapter(){
            @Override
            public void mouseEntered(MouseEvent event){
                JButton buton = (JButton)event.getSource();
                buton.setContentAreaFilled(true);  //when hoovered it will show borders and fill area.
            }

            @Override
            public void mouseExited(MouseEvent event){
                JButton buton = (JButton)event.getSource();
                buton.setContentAreaFilled(false); //when mouse is not on button then it will look the same.
            }
        });
        panel.add(button);

     return panel;
}

关于java - 在 Java Swing 中创建一个不可见的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572315/

相关文章:

java - 分配给多维数组中的 arr[x][y] 时出现 NullPointerException

Java 类扩展了 MainActivity 但 findViewById 返回 null?

Java GUI - 从数组中获取随机值

java - WindowBuilder问题

java - 无法调整 JButton 的大小

java - JFileChooser - 自定义文件名(创建新文件)

java - Java/Swing 中的高级 RTFEditorKit

java - Avro 和 Kafka 通过使用 SchemaBuilder

java - 将 spinnermodel 更改为 double 值,以便稍后在更改事件之外使用

python-3.x - 如何在 PyQt 中更改 QCombobox 突出显示颜色