作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
//Calling function
ImagePanel Panel_2 = new ImagePanel(new ImageIcon("C:/Users/kagarwal/Downloads/intacct_logo_standard_web.png").getImage());
Panel_2.add(new JButton());
Panel_2.revalidate();
//Called function
public class ImagePanel extends JPanel {
private Image img;
public ImagePanel(String img) {
this(new ImageIcon(img).getImage());
}
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
要求是:JPanel2 需要有一个背景图像,并且在此之上我们需要添加 JButton。但是,这里的问题是新添加的 JButton 不会出现在给定的 JPanel 中,它只显示背景图像。我缺少刷新吗?
最佳答案
问题出在paintComponent中,您只要求图形对象绘制图像。但是您应该通过调用 super.paintComponent() 传递图形对象来调用父类(super class) PaintComponent 方法,以便正确显示面板的所有组件。
关于java - 如何向 JPanel 添加背景,然后在该 JPanel 上添加 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38634500/
我是一名优秀的程序员,十分优秀!