java - 无法将项目添加到自定义绘制的 JPanel

标签 java swing

当我尝试使用 myCustomPanel.add(someComponent) 时,它不会添加...

这是我的自定义 JPanel 类:

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;


/**
 *
 * @author Jacob
 */
public class OSXMainPanel extends JPanel {
    public static final long serialVersionUID = 24362462L;


    private Image image;


    public OSXMainPanel() {
        super.setOpaque(true);
        try {
            image = javax.imageio.ImageIO.read(new java.net.URL(getClass().getResource("/assets/background.png"), "background.png"));
        } catch (Exception e) {}
    }


    @Override
    protected void paintComponent(Graphics g) {
        if (isOpaque())
        {
            g.setColor(getBackground());
            g.fillRect(0, 0, getWidth(), getHeight());
        }
        for(int w = 0; w < this.getWidth(); w = w + 50) {
            for(int h = 0; h < this.getHeight(); h = h + 50) {
                g.drawImage(image, w, h, 50, 50, this);
            }
        }
    }


}

最佳答案

这不起作用的原因是你的paintComponent方法没有绘制添加的组件。在 PaintComponent 方法开始时调用 super.paintComponent(g) 应该可以解决这个问题。

关于java - 无法将项目添加到自定义绘制的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4408312/

相关文章:

java - 使用 Java 实现 Mendeley 中的 Oauth 2

java - 轴标签的 x-y 图和旋转文本

Java Swing JTree 树模型 - 如何进行延迟初始化

java - 将大文件转换为Java中的base64表示;内存不足异常

java - CensoredWriter cw = new CensoredWriter(System.out, "whine|whining");

java - 如何将自定义 SOAP-Header 元素添加到 Spring-WS 中生成的 WSDL

Java 使用客户端套接字的多线程

java - Spring HATEOAS 中的 Resource 是否取代了 DTO?

java - 将 JPanel 大小设置为不大于其包含的元素

getProgress() 和 getNewValue() 之间的 Java 区别