JavaFX, exercício 2
package javafx03;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx03.iu.gui.PaneOrganizer;
public class Javafx03 extends Application {
public static void main(String[] args) {
//redirecionar a execução para o método launch
launch(args);
}
@Override
public void init() throws Exception {
//inicar qualquer coisa antes do start
System.out.println("init");
super.init();
}
//méotod obrigatório abstract do Application
@Override
public void start(Stage stage) throws Exception {
System.out.println("start");
//no palco vão ocorrer cenas
PaneOrganizer po = new PaneOrganizer();
Scene cena = new Scene(po, 600, 400);
stage.setScene(cena);
stage.setTitle("programação avançada!");
stage.setMinWidth(300);
stage.setMinHeight(200);
stage.show();
}
@Override
public void stop() throws Exception {
System.out.println("stop");
super.stop();
}
}
package javafx03.iu.gui;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx03.logica.Figura;
//pane, usa o espaço todo disponivel
public class PaneOrganizer extends Pane {
//criar a figura
Figura figura;
Ellipse elipse;
public PaneOrganizer() {
this.figura = new Figura();
figura.setPrimeiroPonto(0, 0);
figura.setSegundoPonto(100, 50);
figura.setRGB(0, 255, 0);
criarLayout();
registaListeners();
atualizaFigura();
}
private void criarLayout() {
//criar uma nova elipse
/*
elipse.setCenterX(200);
elipse.setCenterY(100);
elipse.setFill(Color.GREEN);
elipse.setRadiusX(200);
elipse.setRadiusY(100);
*/
//adicionar a elipse ao pane
elipse = new Ellipse();
this.getChildren().add(elipse);
}
private void registaListeners() {
//podia ser feito numa classe à parte
this.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
figura.setPrimeiroPonto((int) t.getX(), (int) t.getY());
figura.setSegundoPonto((int) t.getX(), (int) t.getY());
figura.setRGB((int) (Math.random() * 256), (int) (Math.random() * 256), (int) (Math.random() * 256));
atualizaFigura();
}
});
//com lambda
this.setOnMouseDragged((t) -> {
figura.setSegundoPonto((int) t.getX(), (int) t.getY());
atualizaFigura();
});
// this.setOnMouseReleased((t) -> {
// figura.setSegundoPonto((int) t.getX(), (int) t.getY());
// atualizaFigura();
// });
}
private void atualizaFigura() {
elipse.setFill(Color.rgb(figura.getR(), figura.getG(), figura.getB()));
elipse.setCenterX((figura.getXi() + figura.getXf()) / 2);
elipse.setCenterY((figura.getYi() + figura.getYf()) / 2);
elipse.setRadiusX(figura.getAltura() / 2);
elipse.setRadiusY(figura.getLargura() / 2);
}
}
package javafx03.logica;
public class Figura {
int xi, xf;
int yi, yf;
int r, g, b;
public Figura() {
}
public int getXi() {
return xi;
}
public int getXf() {
return xf;
}
public int getYi() {
return yi;
}
public int getYf() {
return yf;
}
public int getR() {
return r;
}
public int getG() {
return g;
}
public int getB() {
return b;
}
public void setRGB(int r, int g, int b) {
this.r = r;
this.g = g;
this.b = b;
}
public void setPrimeiroPonto(int x, int y) {
this.xi = x;
this.yi = y;
}
public void setSegundoPonto(int x, int y) {
this.xf = x;
this.yf = y;
}
public int getLargura() {
return Math.abs(xf - xi);
}
public int getAltura() {
return Math.abs(xf - xi);
}
}
0 thoughts on “JavaFX, exercício 2”