开发者

How to find variable g in this code?

开发者 https://www.devze.com 2023-02-23 03:33 出处:网络
How to find variable g in this code? I would like to draw line using fillRect from paintComponent. Please help.

How to find variable g in this code? I would like to draw line using fillRect from paintComponent. Please help.

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开发者_JAVA百科 = 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 + ")");
    }
}


You need to override the paintComponent(Graphics g) method in the class that extends the JPanel, i.e. your Test class. You wrote a paintComponent method in a class DDA2 but that does nothing.

In the paintComponent method you can then call:

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


In addition to what Vincent says, it looks like you want to have the fillRect taking place in your licz method. No problem. Simply call your licz method from the paintComponent method. (It's easiest to do this if your method is defined in the same class as the paintComponent method, by the way.)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号