【问题标题】:Calling paint() method using parameters使用参数调用paint()方法
【发布时间】:2017-03-05 11:11:20
【问题描述】:

我正在尝试使用其他类的一些值绘制一个小图(物理问题)。我想要的是将该问题的结果转换为绘图。例如,x 和 y 用于表示抛物线射门的圆弧。

我的问题是我不知道如何调用paint() 方法来编写翻译这些值的所有内容。 执行显示 JavaNullPointerException。这是我的代码:

public class Draw extends JFrame {
    private Calculate c;


    public Draw() {
        super("Title");
        setSize(1000, 500);
        setVisible(true);
    }

    public void paint(Graphics g, int x, int y, int alpha) {
        super.paint(g);

        g.setColor(Color.RED);
        g.drawLine(0, 30, 350, 30);

        g.setColor(Color.BLUE);
        g.drawRect(200, 100, 450, 250);
        g.drawString("x = 10 cm", 400, 90);
        g.drawString("y = 2 cm", 670, 200);
        //g.drawLine(200, 350, 450, 250);
        g.drawArc(200, 350, x, y, alpha, 70);
}

public static void main(String args[]) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        Draw aplication = new Draw();
        aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

还有主类:

public class Main{
    public static void main(String[] args) {
//45 means alpha
        Calculate c = new Calculate(45, (int) (5.0*(Math.pow(10, 6))));
        Graphics g = new Graphics() {..};
        Draw d = new Draw();
//After everything is calculated
        d.paint(g, c.getX(), c.getY(), c.getAlfa());
    }
}

【问题讨论】:

  • paint() 会在必要时由 Java 自动调用以绘制 JFrame(或其他组件)。您可能想要做的是将您的计算作为一个字段放入 Draw 中。然后你将在 Draw 中使用 main 方法并摆脱你的 Main 类。有关 JFrames (docs.oracle.com/javase/tutorial/uiswing/components/frame.html) 的更多信息,请参阅 JFrame 教程,这个 SO 帖子似乎有一些关于自定义组件的信息:stackoverflow.com/a/3110836(这样您就可以了解更改绘制功能)

标签: java graphics


【解决方案1】:

Paint() 方法是在 jpanel 而不是你扩展 jpanel 的 jframe 中找到的

class name extends JPanel{}

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    相关资源
    最近更新 更多