java - 在背景图像 JFrame 上绘制形状

标签 java image swing jframe

我正在尝试在 JFrame 中的背景图像上绘制形状。我可以获得所需的图像作为背景,但无法在该图像之上绘制形状。到目前为止我所尝试的只是重新排列组件的调用顺序,但这似乎没有效果。这就是我所做的:

JFrame frame = new JFrame ();
frame.setTitle("Happy Holidays!");
frame.setSize(813,645);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setContentPane(new JLabel(new ImageIcon("C:\\Users\\Brian\\Desktop\\Eclipse Projects\\BrianBolnickFinal\\bin\\christmas.jpeg")));
frame.add(holiday);

内容 Pane 包含图像,holiday 是绘制我的形状的位置。是因为无法在内容 Pane 上绘图吗?还是其他地方出了什么问题?我的 holiday 类(class)在没有图像的情况下也能正常工作,所以我知道这至少是有效的。有什么建议吗?

最佳答案

首先,如果您希望能够覆盖其他组件,holiday 应该是透明的

holiday.setOpaque(false);

接下来,您有两个选择。

首先,您可以向标签添加假期...

JLabel label = new JLabel(new ImageIcon("C:\\Users\\Brian\\Desktop\\Eclipse Projects\\BrianBolnickFinal\\bin\\christmas.jpeg")));
label.setLayout(new BorderLayout());
label.add(holiday);

或者您可以使用OverlayLayout布局管理器

关于java - 在背景图像 JFrame 上绘制形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20255374/

相关文章:

java - 如何从Java项目中的所有Java文件中提取所有字符串?

java - 如何使用数据库在java swing gui中显示特定值?

java - 哪个 Java Collection 最适合这种情况

php - 如何从 laravel 中插入的图像数组中获取单个图像?

css - 背景停止,我尝试使用重复和我发现的任何东西

image - 在不丢失分辨率的情况下在 Matlab 中读取 Parula 图像

java - 无法显示多个 JPanel

java - 将相同的组件添加到 JTextPane

java - Spring 框架 : Configure infrastructure bean via xml

java - 嵌套的 JPanel 的背景图像未正确重新绘制