Java 如何在paintComponent()方法之外访问图形对象

Java 如何在paintComponent()方法之外访问图形对象,java,swing,Java,Swing,在扩展JPanel的类中给定以下方法: public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, null); g.setColor(Color.BLACK); } public void drawLabels(LinkedList<Label> labelList) { for (

在扩展JPanel的类中给定以下方法:

public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.drawImage(image, 0, 0, null);
        g.setColor(Color.BLACK);

    }

public void drawLabels(LinkedList<Label> labelList) {

        for (Label l : labelList) {
            // drawString(l.getContent(), l.getX(), l.getY());
        }

    }
公共组件(图形g){
超级组件(g);
g、 drawImage(image,0,0,null);
g、 设置颜色(颜色为黑色);
}
公共空白标签(LinkedList标签列表){
用于(标签l:标签列表){
//拉丝(l.getContent(),l.getX(),l.getY());
}
}
如何从中访问图形元素 drawLabels()中的paintComponent()?我见过(很多) 关于不处理外部图形对象的备注 paintComponent()方法,但我无法理解 另一种解决办法

如有任何有益的建议,将不胜感激

如何从drawLabels()中的paintComponent()访问图形元素

您不尝试直接访问图形对象

paintComponent()
方法内部调用
drawLabels()
方法,然后可以将图形对象传递给drawLabels()方法:

公共组件(图形g){
超级组件(g);
g、 drawImage(image,0,0,null);
g、 设置颜色(颜色为黑色);
图纸标签(g,标签);
}
公共空白标签(图形g、LinkedList标签列表){
用于(标签l:标签列表){
//拉丝(l.getContent(),l.getX(),l.getY());
}
}

您在调用什么
drawLabels
?paintComponent应该调用它并传入
图形
难道不能从paintComponent()调用drawLabels()并传入图形引用吗?对不起。正如我在下面提到的,drawLabels()在另一个类中被调用,在该类中它被传递给LinkedList。这就是为什么我很难弄明白这一点。很抱歉,我忘了提到drawLabels()是在另一个类中调用的,在这个类中它会传递给LinkedList。我处理整个问题的方法是否错误?
我处理整个问题的方法是否错误?
是。如果要更改绘制在面板上的数据,则应使用“setter”方法来设置数据。然后setter方法将保存数据并调用repaint()。然后,repaint()方法将调用paintComponent()方法,以便可以重新绘制面板。这就是所有组件的工作方式,以及为什么JLabel有像setText()、setFont()、set前台()、setBackground()这样的方法……感谢您的详细解释。
public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.drawImage(image, 0, 0, null);
        g.setColor(Color.BLACK);

        drawLabels(g, labelList);

    }

public void drawLabels(Graphics g, LinkedList<Label> labelList) {

        for (Label l : labelList) {
            // drawString(l.getContent(), l.getX(), l.getY());
        }

    }