Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package javafxapplication1;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import javafx.application.Application;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.layout.GridPane;
- import javafx.scene.layout.StackPane;
- import javafx.scene.layout.VBox;
- import javafx.scene.shape.Circle;
- import javafx.scene.shape.Rectangle;
- import javafx.stage.Stage;
- /**
- *
- * @author student
- */
- interface Figure {
- double pole();
- double obwod();
- void zeskaluj(double skala);
- }
- class Kolo implements Figure {
- double promienKola;
- public Kolo(double promien) {
- if (promien < 0) {
- throw new Error("Proszę podać promień o wartości większej od zera");
- }
- this.promienKola = promien;
- }
- @Override
- public double pole() {
- return Math.PI * Math.pow(this.promienKola, 2);
- }
- @Override
- public double obwod() {
- return this.promienKola * 2 * Math.PI;
- }
- @Override
- public void zeskaluj(double skala) {
- this.promienKola = this.promienKola * skala;
- }
- TrojkatRownoboczny ZamienNaTrojkatRownoboczny() {
- return new TrojkatRownoboczny(Math.sqrt((this.pole() * 2) / Math.sin(Math.toRadians(180 / 3))));
- }
- Kwadrat ZamienNaKwadrat() {
- return new Kwadrat(Math.sqrt(this.pole()));
- }
- }
- class Prostokat implements Figure {
- double bokA;
- double bokB;
- public Prostokat(double a, double b) {
- if (a < 0 || b < 0) {
- throw new Error("Proszę podać boki o wartości większej od zera");
- }
- this.bokA = a;
- this.bokB = b;
- }
- @Override
- public double pole() {
- return this.bokA * this.bokB;
- }
- @Override
- public double obwod() {
- return this.bokA * 2 + this.bokB * 2;
- }
- @Override
- public void zeskaluj(double skala) {
- if (skala < 0) {
- throw new Error("Skala nie może być mniejsza lub równa zero");
- }
- this.bokA = this.bokA * skala;
- this.bokB = this.bokB * skala;
- }
- }
- class Triangle implements Figure {
- double bokA;
- double bokB;
- double bokC;
- public Triangle(double bokA, double bokB, double bokC) {
- if (!(bokA + bokB > bokC && bokB + bokC > bokA && bokA + bokC > bokB)) {
- throw new Error("Nieprawidłowe boki trójkąta");
- }
- this.bokA = bokA;
- this.bokB = bokB;
- this.bokC = bokC;
- }
- @Override
- public double pole() {
- double polowaObwodu = this.obwod() / 2;
- return Math.sqrt(polowaObwodu * (polowaObwodu - bokA) * (polowaObwodu - bokB) * (polowaObwodu - bokC));
- }
- @Override
- public double obwod() {
- return this.bokA + this.bokB + this.bokC;
- }
- @Override
- public void zeskaluj(double skala) {
- this.bokA = this.bokA * skala;
- this.bokB = this.bokB * skala;
- this.bokC = this.bokC * skala;
- }
- }
- class Kwadrat implements Figure {
- double bok;
- public Kwadrat(double a) {
- if (a < 0) {
- throw new Error("Proszę podać bok o wartości większej od zera");
- }
- this.bok = a;
- }
- @Override
- public double pole() {
- return this.bok * this.bok;
- }
- @Override
- public double obwod() {
- return this.bok * 4;
- }
- @Override
- public void zeskaluj(double skala) {
- if (skala < 0) {
- throw new Error("Skala nie może być mniejsza lub równa zero");
- }
- this.bok = this.bok * skala;
- }
- TrojkatRownoboczny ZamienNaTrojkatRownoboczny() {
- return new TrojkatRownoboczny(this.bok * 2);
- }
- Kolo ZamienNaKolo() {
- return new Kolo(Math.sqrt(this.pole()/Math.PI));
- }
- }
- class TrojkatRownoboczny extends Triangle {
- public TrojkatRownoboczny(double bok) {
- super(bok, bok, bok);
- }
- Kwadrat ZamienNaKwadrat() {
- return new Kwadrat(Math.sqrt(this.pole()));
- }
- Kolo ZamienNaKolo() {
- return new Kolo(Math.sqrt(this.pole()/Math.PI));
- }
- }
- class LabCircle extends Circle {
- public LabCircle(Kolo kolo) {
- super();
- this.setRadius(kolo.promienKola);
- }
- }
- class LabSquare extends Rectangle {
- public LabSquare(Kwadrat kwadrat) {
- super();
- this.setWidth(kwadrat.bok);
- this.setHeight(kwadrat.bok);
- }
- }
- public class JavaFXApplication1 extends Application {
- @Override
- public void start(Stage primaryStage) {
- System.out.println("Kolo");
- Kolo kolo = new Kolo(300);
- System.out.println("Obwod: " + kolo.obwod());
- System.out.println("Pole: " + kolo.pole());
- kolo.zeskaluj(0.5);
- System.out.println("Pole po zeskalowaniu: " + kolo.pole());
- System.out.println("Prostokat");
- Prostokat prostokat = new Prostokat(2, 3);
- System.out.println("Obwod: " + prostokat.obwod());
- System.out.println("Pole: " + prostokat.pole());
- prostokat.zeskaluj(0.5);
- System.out.println("Pole po zeskalowaniu: " + prostokat.pole());
- System.out.println("Trojkat");
- Triangle trojkat = new Triangle(2, 2, 3);
- System.out.println("Obwod: " + trojkat.obwod());
- System.out.println("Pole: " + trojkat.pole());
- trojkat.zeskaluj(0.5);
- System.out.println("Pole po zeskalowaniu: " + trojkat.pole());
- System.out.println("Kwadrat");
- Kwadrat kwadrat = new Kwadrat(20);
- System.out.println("Obwod: " + kwadrat.obwod());
- System.out.println("Pole: " + kwadrat.pole());
- kwadrat.zeskaluj(0.5);
- System.out.println("Pole po zeskalowaniu: " + kwadrat.pole());
- System.out.println("Trojkat rownoboczny");
- TrojkatRownoboczny trojBocz = new TrojkatRownoboczny(20);
- System.out.println("Obwod: " + trojBocz.obwod());
- System.out.println("Pole: " + trojBocz.pole());
- trojBocz.zeskaluj(0.5);
- System.out.println("Pole po zeskalowaniu: " + trojBocz.pole());
- ArrayList<Kolo> listaKol = new ArrayList<Kolo>();
- ArrayList<Kwadrat> listaKwadratow = new ArrayList<Kwadrat>();
- listaKol.add(new Kolo(20));
- listaKol.add(new Kolo(30));
- listaKol.add(new Kolo(40));
- int listaKolLen = listaKol.size();
- for (int i = 0; i < listaKolLen; i++) {
- listaKwadratow.add(listaKol.get(i).ZamienNaKwadrat());
- }
- int listaKwadratowLen = listaKol.size();
- for (int i = 0; i < listaKwadratowLen; i++) {
- System.out.println("Bok kwadratu po przeksztalceniu: " + listaKwadratow.get(i).bok);
- }
- VBox drawPanel = new VBox();
- drawPanel.setMinWidth(300);
- drawPanel.setMinHeight(300);
- drawPanel.setStyle("-fx-border-color: blue; -fx-border-width: 5");
- Button createSquareBtn = new Button();
- createSquareBtn.setText("Utworz kwadrat");
- createSquareBtn.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- drawPanel.getChildren().clear();
- int listaKolLen = listaKol.size();
- for (int i = 0; i < listaKolLen; i++) {
- drawPanel.getChildren().add(new LabCircle(listaKol.get(i)));
- }
- }
- });
- Button transformSquareToCircleBtn = new Button();
- transformSquareToCircleBtn.setText("Zamien kwadrat na trojkat");
- transformSquareToCircleBtn.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- drawPanel.getChildren().clear();
- int listaKolLen = listaKol.size();
- for (int i = 0; i < listaKolLen; i++) {
- drawPanel.getChildren().add(new LabSquare(listaKol.get(i).ZamienNaKwadrat()));
- }
- }
- });
- Group root = new Group();
- GridPane gridPane = new GridPane();
- VBox controlPanel = new VBox();
- controlPanel.setMinWidth(200);
- controlPanel.setMinHeight(100);
- controlPanel.getChildren().add(createSquareBtn);
- controlPanel.getChildren().add(transformSquareToCircleBtn);
- gridPane.add(controlPanel, 0, 0);
- gridPane.add(drawPanel, 1, 0);
- root.getChildren().add(gridPane);
- Scene scene = new Scene(root, 500, 300);
- primaryStage.setTitle("Hello World!");
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement