在Java swing中怎么让图片高光
时间: 2023-12-10 16:40:30 浏览: 121
java swing程序 实现点击图片列表 改变图片
5星 · 资源好评率100%
在 Java Swing 中,你可以使用 JButton 组件来实现图片高光效果。下面是一个简单的示例代码:
```
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class HighlightedImageButtonExample extends JPanel {
private BufferedImage image;
private JButton button;
public HighlightedImageButtonExample() {
try {
image = ImageIO.read(new File("path/to/image.png"));
} catch (IOException e) {
e.printStackTrace();
}
button = new JButton(new ImageIcon(image)) {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (getModel().isPressed()) {
g2d.setColor(new Color(255, 255, 255, 128));
g2d.fillRect(0, 0, getWidth(), getHeight());
} else if (getModel().isRollover()) {
g2d.setColor(new Color(255, 255, 255, 64));
g2d.fillRect(0, 0, getWidth(), getHeight());
}
super.paintComponent(g);
}
};
button.setContentAreaFilled(false);
button.setBorderPainted(false);
add(button);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Highlighted Image Button Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setContentPane(new HighlightedImageButtonExample());
frame.setVisible(true);
}
}
```
在这个示例中,我们创建了一个 `JPanel`,其中包含一个 `JButton`,它显示了一个图片。在按钮的 `paintComponent` 方法中,我们检查按钮的状态,如果按钮被按下,则绘制一个半透明白色矩形,如果鼠标悬停在按钮上,则绘制一个半透明浅色矩形。这样就实现了图片高光的效果。
注意,为了使按钮显示高光效果,我们需要将 `setContentAreaFilled` 和 `setBorderPainted` 方法都设置为 `false`,这样按钮的背景和边框就不会被绘制出来。
阅读全文