JavaFX, exercício 3
package recursopa; import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; import recursopa.iu.gui.PaneOrganizer; public class RecursoPA extends Application { public static void main(String[] args) { //passamos os argumentos para o subsistema gráfico os parametros launch(args); } @Override //quando começa a aplicação public void start(Stage stage) throws Exception{ PaneOrganizer po = new PaneOrganizer(); Scene scene = new Scene(po,600,400); stage.setScene(scene); //aplica a cena no stage stage.setTitle("Exercicio de programação avançada"); stage.setMinHeight(300.0); stage.setMinWidth(300.0); stage.show(); } }
package recursopa.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 recursopa.logica.Figura; public class PaneOrganizer extends Pane { //vai extender sempre um dos containers possiveis, extends Pane Figura fig; Ellipse elipse; public PaneOrganizer() { fig = new Figura(); fig.setPrimeiroPonto(0, 0); fig.setSegundoPonto(100, 50); fig.setRGB(0, 50, 0); criaLayout(); //para criar os componentes que vão surgir no ecrã registaListeners(); // registar os comportamentos dos objectos atualizaElipse(); } void criaLayout() { //adicionar o elemento ao Pane elipse = new Ellipse(); this.getChildren().add(elipse); } public void registaListeners() { //detectar as ações do rato this.setOnMousePressed(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent t) { fig.setPrimeiroPonto((int) t.getX(), (int) t.getY()); fig.setSegundoPonto((int) t.getX(), (int) t.getY()); fig.setRGB((int) (Math.random() * 256), (int) (Math.random() * 256), (int) (Math.random() * 256)); atualizaElipse(); } }); //usando lambda functions this.setOnMouseReleased((t) -> { fig.setSegundoPonto((int) t.getX(), (int) t.getY()); atualizaElipse(); }); this.setOnMouseDragged((t) -> { fig.setSegundoPonto((int) t.getX(), (int) t.getY()); atualizaElipse(); }); } //para desenhar a elipse void atualizaElipse() { //elipse.setFill(Color.GREEN); elipse.setFill(Color.rgb(fig.getR(), fig.getG(), fig.getB())); //para ir buscar as informações à fig //elipse.setCenterX(200.0); elipse.setCenterX((fig.getXi() + fig.getXf()) / 2); //elipse.setCenterY(200.0); elipse.setCenterY((fig.getYi() + fig.getYf()) / 2); //elipse.setRadiusX(150.0); elipse.setRadiusX(fig.getLargura() / 2); //elipse.setRadiusY(100.0); elipse.setRadiusY(fig.getAltura() / 2); } }
package recursopa.logica; public class Figura { //métodos necessários para gerir a figura int xi, yi, xf, yf; //posicao e tamanho int r, g, b; //para a cor public Figura() { } public int getXi() { return xi; } public int getYi() { return yi; } public int getXf() { return xf; } 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); //não interessa a ordem dos valores } public int getAltura() { return Math.abs(yf - yi); //não interessa a ordem dos valores } }
Tags : javafx, Programação avançada
0 thoughts on “JavaFX, exercício 3”