如何在paintComponent()方法之外访问Graphics对象

时间:2014-04-21 17:38:17

标签: 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 (Label l : labelList) {
            // drawString(l.getContent(), l.getX(), l.getY());
        }

    }

我将如何从中访问Graphics元素 paintComponent()在drawLabels()里面?我见过(无数) 关于不处理外面的Graphics对象的评论 paintComponent()方法,但我无法理解 另一种解决方案。

任何有用的建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

  

我如何从drawLabels()中的paintComponent()访问Graphics元素?

您不要尝试直接访问Graphics对象。

drawLabels()方法中调用paintComponent()方法,然后可以将Graphics对象传递给drawLabels()方法:

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());
        }

    }