Java 如何在这段代码中找到变量g?

Java 如何在这段代码中找到变量g?,java,paintcomponent,Java,Paintcomponent,如何在这段代码中找到变量g?我想用paintComponent中的fillRect来画线。 请帮忙 import java.awt.*; import java.lang.String.*; import java.util.Scanner; import java.io.IOException; import javax.swing.*; class Test extends JPanel { public static void main(String[] args) {

如何在这段代码中找到变量g?我想用paintComponent中的fillRect来画线。 请帮忙

import java.awt.*;
import java.lang.String.*;
import java.util.Scanner;
import java.io.IOException;
import javax.swing.*;

class Test extends JPanel {
    public static void main(String[] args) {
        String x1;
        String x2;
        String y1;
        String y2;

        Scanner sc = new Scanner(System.in);
        System.out.print("Podaj pierwsza wspolrzedna pierwszego punktu: ");
        x1 = sc.nextLine();
        System.out.print("Podaj druga wspolrzedna pierwszego punktu: ");
        x2 = sc.nextLine();
        System.out.print("Podaj pierwsza wspolrzedna drugiego punktu: ");
        y1 = sc.nextLine();
        System.out.print("Podaj druga wspolrzedna drugiego punktu: ");
        y2 = sc.nextLine();

        Test nowy = new Test();
        DDA2 dda2 = new DDA2();
        dda2.licz(x1, x2, y1, y2);

        JFrame ramka = new JFrame();
        ramka.setSize(300,300);
        ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ramka.getContentPane().add(new Test());
        ramka.setVisible(true);

    }


}



class DDA2 {
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.setColor(Color.RED);
    }



    public void licz(String xx1, String xx2, String yy1, String yy2){
        double dxx1 = Double.parseDouble(xx1);
        double dxx2 = Double.parseDouble(xx2);
        double dyy1 = Double.parseDouble(yy1);
        double dyy2 = Double.parseDouble(yy2);
        double dx = dxx2 - dxx1;
        double dy = dyy2 - dyy1;

        if (Math.abs(dx) >= Math.abs(dy))
        {
            double m = Math.abs(dx);
            System.out.println("DX" + m);
        }
        else
        {
            // ALGORYTYM PRZYROSTOWY
            double m = Math.abs(dy);
            //System.out.println("DY" + m);
            double x = dxx1;
            double y = dyy1;
            for (int i=1; i <= m; i++)
            {
                x = x + dx/m;
                y = y + dy/m;
                g.fillRect((int) x, (int) y, 1, 1);
            }
        }   

    System.out.println("Wspolrzednie punktu pierwszego to: " + "(" + dxx1 + "; " + dxx2 +")");
    System.out.println("Wspolrzednie punktu drugiego to: " + "(" + dyy1 + "; " + dyy2 + ")");
    }
}
import java.awt.*;
导入java.lang.String.*;
导入java.util.Scanner;
导入java.io.IOException;
导入javax.swing.*;
类测试扩展了JPanel{
公共静态void main(字符串[]args){
字符串x1;
字符串x2;
字符串y1;
字符串y2;
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“Podaj pierwsza wspolrzedna pierwszego punktu:”;
x1=sc.nextLine();
系统输出打印(“Podaj druga wspolrzedna pierwszego punktu:”;
x2=sc.nextLine();
系统输出打印(“Podaj pierwsza wspolrzedna drugiego punktu:”;
y1=sc.nextLine();
系统输出打印(“Podaj druga wspolrzedna drugiego punktu:”;
y2=sc.nextLine();
立即测试=新测试();
DDA2 DDA2=新的DDA2();
dda2.licz(x1,x2,y1,y2);
JFrame ramka=新的JFrame();
ramka.setSize(300300);
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.getContentPane().add(新测试());
ramka.setVisible(真);
}
}
DDA2类{
公共组件(图形g)
{
超级组件(g);
g、 setColor(Color.RED);
}
公共无效licz(字符串xx1、字符串xx2、字符串yy1、字符串yy2){
double dxx1=double.parseDouble(xx1);
double dxx2=double.parseDouble(xx2);
double dyy1=double.parseDouble(yy1);
double dyy2=double.parseDouble(yy2);
双dx=dxx2-dxx1;
双dy=DY2-DY1;
if(Math.abs(dx)>=Math.abs(dy))
{
双m=数学绝对值(dx);
系统输出打印项次(“DX”+m);
}
其他的
{
//普兹罗斯托维算法
双m=数学绝对值(dy);
//系统输出打印项次(“DY”+m);
双x=dxx1;
双y=dyy1;

对于(int i=1;i您需要重写扩展JPanel的类中的paintComponent(Graphics g)方法,即您的测试类。您在类DDA2中编写了一个paintComponent方法,但该方法不起任何作用

在paintComponent方法中,可以调用:

    g.fillRect(x, y, w, h);

除了Vincent所说的,看起来您希望在
licz
方法中执行
fillRect
。没问题。只需从
paintComponent
方法调用
licz
方法即可。(顺便说一句,如果你的方法与
paintComponent
方法定义在同一个类中,那么最容易做到这一点。)

没有变量
g
…我不确定你在寻找什么…是的,有-paintComponent中提到了它