Java 如何获取以前计算的x和y值,并将它们放入g.drawLine参数中

Java 如何获取以前计算的x和y值,并将它们放入g.drawLine参数中,java,graphics,Java,Graphics,我正在尝试创建一个程序,它以y=mx+b的形式接受用户输入的字符串,并使用输入的等式绘制一条线。我唯一不知道的是一个问题:如何获取计算出的x和y值,并将它们放置在g.drawLine参数中 public void paint(Graphics g){ g.drawLine(x,y,x2,y2); g.setColor(Color.black); } 做什么的粗略清单 从字符串中提取m和b 将0插入x,并将(x,y)对用于第一个点 插入x的宽度,并将该结果用于第二个点 如

我正在尝试创建一个程序,它以y=mx+b的形式接受用户输入的字符串,并使用输入的等式绘制一条线。我唯一不知道的是一个问题:如何获取计算出的x和y值,并将它们放置在g.drawLine参数中

    public void paint(Graphics g){
    g.drawLine(x,y,x2,y2);
    g.setColor(Color.black);
}

做什么的粗略清单

  • 从字符串中提取m和b
  • 将0插入x,并将(x,y)对用于第一个点
  • 插入x的宽度,并将该结果用于第二个点
  • 如果您想让y随着我们的移动而增长,则需要采用
    -y+高度

  • 做什么的粗略清单

  • 从字符串中提取m和b
  • 将0插入x,并将(x,y)对用于第一个点
  • 插入x的宽度,并将该结果用于第二个点
  • 如果您想让y随着我们的移动而增长,则需要采用
    -y+高度

  • 您可以定义一个具有m、b等实例变量的Line类,并让其paint或display方法使用这些变量绘制一条线。然后,从该类中创建一个Line对象,并在该类中调用其paint方法(将图形对象作为参数传递)。这样做的另一个好处是,如果您想要绘制多条线,您可以创建多条线对象并调用它们的每个绘制方法

    大体上有点像:

    public void paint(Graphics g) {
        myLine.paint(g);
        ...
    
    。。。在Line类中:

    public void paint(Graphics g) {
        g.drawLine(myx1, myy1, myx2, myy2);
        ....
    

    编辑:如果您想要一个非常快速的解决方案,并且不需要使程序可扩展,那么还可以将行的属性存储为主类的属性。这看起来像:

    class Main {
        static int lineInformation;
    
        void userInputMethod() {
            lineInformation = ... // the user input
            ...
        }
    
        public void paint(Graphics g) {
            g.drawLine(lineInformation,...);
            ...
        }
    }
    

    不过,我还是会推荐一个Line类用于以后使用或修改的程序。

    您可以定义一个Line类,该类包含m、b等的实例变量,并让其paint或display方法使用这些变量绘制一条线。然后,从该类中创建一个Line对象,并在该类中调用其paint方法(将图形对象作为参数传递)。这样做的另一个好处是,如果您想要绘制多条线,您可以创建多条线对象并调用它们的每个绘制方法

    大体上有点像:

    public void paint(Graphics g) {
        myLine.paint(g);
        ...
    
    。。。在Line类中:

    public void paint(Graphics g) {
        g.drawLine(myx1, myy1, myx2, myy2);
        ....
    

    编辑:如果您想要一个非常快速的解决方案,并且不需要使程序可扩展,那么还可以将行的属性存储为主类的属性。这看起来像:

    class Main {
        static int lineInformation;
    
        void userInputMethod() {
            lineInformation = ... // the user input
            ...
        }
    
        public void paint(Graphics g) {
            g.drawLine(lineInformation,...);
            ...
        }
    }
    

    不过,我还是建议您以后使用或修改的程序使用Line类。

    这将确保该行填充组件的区域:

    double m= ...
    double b= ...
    double x=g.getClipBounds().x;
    double x2=g.getClipBounds().x+g.getClipBounds().width;
    g.drawLine(x,m*x+b,x2,m*x2+b);
    

    这将确保线填充元件的区域:

    double m= ...
    double b= ...
    double x=g.getClipBounds().x;
    double x2=g.getClipBounds().x+g.getClipBounds().width;
    g.drawLine(x,m*x+b,x2,m*x2+b);
    

    怎么了?一切都应该正常。@M.M.询问者的意思是用另一种方法定义x、y等。他们想知道如何将信息传递给绘画方法。怎么了?一切都应该正常。@M.M.询问者的意思是用另一种方法定义x、y等。他们想知道如何将信息传递给paint方法。静态变量快速修复的问题是,我有用户输入的信息,我将这些信息转化为正在绘制的线的第一个和最后一个点。我需要把这些点放在g.drawLine()参数中相应的位置;静态变量不起作用,因为我的值不能是常量,所以它们的值不会通过每个方法传递,只有变量本身。明白我的意思吗?也许我不明白。静态变量是可以修改的,这是一种糟糕的做法。它们的行为类似于局部变量,不同的是它们在类的所有方法中都是可见的和可访问的(包括可修改的),而不仅仅是一个。我编辑了它,以便我们都在同一页上。我误解你的要求了吗?很好。欢迎来到SO。如果其中一个回答对您有帮助,请随意给某人打勾。静态变量快速修复的问题是,我有用户输入的信息,我将这些信息转化为正在绘制的线条的第一个和最后一个点。我需要把这些点放在g.drawLine()参数中相应的位置;静态变量不起作用,因为我的值不能是常量,所以它们的值不会通过每个方法传递,只有变量本身。明白我的意思吗?也许我不明白。静态变量是可以修改的,这是一种糟糕的做法。它们的行为类似于局部变量,不同的是它们在类的所有方法中都是可见的和可访问的(包括可修改的),而不仅仅是一个。我编辑了它,以便我们都在同一页上。我误解你的要求了吗?很好。欢迎来到SO。如果其中一个回答对你有帮助,请随意给某人打勾。