我在 Java Swing GUI 上看到过很多次看起来像图像的按钮,直到鼠标滑过它们。他们似乎没有填充他们的内容区域。当鼠标滑过它们时,内容区域被填满,但按钮看起来好像鼠标没有悬停在它上面。这方面的一个例子是用于激活 SwingSet2 中每个演示的按钮工具栏。
这种效果怎么可能?
编辑:以下是说明我的问题的图片:
默认状态
悬停状态
点击( Activity )状态
这些是在 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/