rysowanie 2D

0

package javaapplication3;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
 
public class Trojkat extends Punkt
{
    Punkt a,b,c;
    Trojkat(double x1,double y1, double x2,double y2, double x3, double y3)
    {
        a = new Punkt(x1, y1);
        b = new Punkt(x2, y2);
        c = new Punkt(x3, y3);       
    }
    Trojkat(Punkt a,Punkt b, Punkt c)
    {
        this.a = a;
        this.b = b;
        this.c = c;

    }

    public double obwod()
    {
        return a.odleglosc(b)+a.odleglosc(c)+b.odleglosc(c);
    }
    public double pole()
    {
        double p=obwod()/2;
        double dl_ab=a.odleglosc(b);
        double dl_bc=b.odleglosc(c);
        double dl_ac=a.odleglosc(c);
        return Math.sqrt(p*(p-dl_ab)*(p-dl_bc)*(p-dl_ac));
    }
    public double wysokosc()
    {
        double dl_a=a.odleglosc(b); 
        return 2*pole()/dl_a;
    }

    
    public void rysuj_trojkat( Graphics2D g)
    {
        Graphics2D g2 = (Graphics2D) g;
        System.out.println("RYSUJE TROJKĄT");
        Line2D kreska1 = new Line2D.Double(a.get_x(),a.get_y(),b.get_x(),b.get_y());
        Line2D kreska2 = new Line2D.Double(a.get_x(),a.get_y(),c.get_x(),c.get_y());
        Line2D kreska3 = new Line2D.Double(c.get_x(),c.get_y(),b.get_x(),b.get_y());
        g2.draw(kreska1); g2.draw(kreska2); g2.draw(kreska3);
    }
    @Override
    public String toString()
    {
        return "WSP TROJKATA: A"+a.toString()+" B"+b.toString()+" C"+c.toString();
    }
    
}

Jak wywołać ta klasę w mainie aby narysował się trójkąt ? Czy metoda rysuj_trojkat jest dobrze napisana ?

0

Chciałem zbudować klasę trojkat na klasie punkt, jak to powinno wygladac ?

0

Chyba zamiast rysuj_cośtam() powinno być paintComponent() - don't U think?

0

W jakiej to przestrzeni trójkąt jest punktem?
Ale gdzie się ma narysować? Masz już jakieś okno, po którym chcesz rysować?

0

dopiero zaczynam jave, nie mam pojęcia w jaki sposób to rysować , szukałem jakichś przykładów łatwych do zrozumienia ale jeszcze tego nie ogarniam.

1

Najprostsze co może być:

import java.awt.*;
import javax.swing.*;

public class Okno {

    public static void main(String args[]) {
	EventQueue.invokeLater(new Runnable() {
	    @Override
	    public void run() {
		JFrame f = new PanelFrame();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setTitle("Cośtam");
		f.setSize(640, 480);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
	    }
	});
    }
}
    
class PanelFrame extends JFrame{
	JLabel label;
	
	public PanelFrame(){
	    
	    label = new JLabel("PanelFrame");
	    add(label, BorderLayout.NORTH);
	    add(new Grafika(), BorderLayout.CENTER);
	}
    }

class Grafika extends JPanel{
//EDIT
    @Override
    public void paintComponent(Graphics g) {
	Graphics2D g2d = (Graphics2D) g;
	g2d.drawRect(50, 50, 100, 100);
	g2d.drawString("Jakiś tekst", 20, 20);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1