java - JPanel 的扩展类不显示 JPanel 的属性

标签 java swing inheritance panel

我正在使用扩展 JPanel 的 RefreshablePanel 类

public class RefreshablePanel extends JPanel {
    static String description="";
    protected void paintComponent(Graphics g){
        g.drawString(description, 10, 11);
}
    void updateDescription(String dataToAppend){    
        description = description.concat("\n").concat(dataToAppend);
       }    
}

JPanel descriptionPanel = new JPanel();
scrollPane_2.setViewportView(descriptionPanel);
descriptionPanel.setBackground(Color.WHITE);
descriptionPanel.setLayout(null);

enter image description here

现在当我这样做时

RefreshablePanel descriptionPanel = new RefreshablePanel();
scrollPane_2.setViewportView(descriptionPanel);
descriptionPanel.setBackground(Color.WHITE);
descriptionPanel.setLayout(null); 

enter image description here

最佳答案

这种情况发生变化的原因是,当您重写 paintComponent 时,必须始终调用 super.paintComponent(g) 作为第一行:

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawString(description, 10, 11);
}

JPanel 父类(super class)中的 paintComponent 方法绘制背景,因此如果插入 super.paintComponent(g),背景将是在绘制任何自定义内容之前先绘制。

关于java - JPanel 的扩展类不显示 JPanel 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144928/

相关文章:

java - 如何用相似但不同的对象填充列表?

java - 为什么我在尝试连接到 URL 时收到 'HTTP Version Not Supported' 回复?

java - 检查所有数组值是否不同

java - 从 JFrame 获取输入

c++ - 派生类中vtable的理解

c++ - 在 Eclipse C++ 中无法识别 protected 成员

java - 如何在 hibernate 中使用条件创建内部查询?

java - Java 8+ 中的 DateTimeFormatter.ISO_LOCAL_DATE 与 DateTimeFormatter.ofPattern ("yyyy-MM-dd")

java - 循环遍历 JPanel 中的嵌套字段

java - JTextArea吞并JButton Action 监听器Java