Home JavaFX - Conceitos e Fundamentos no Java
Post
Cancelar

JavaFX - Conceitos e Fundamentos no Java

Baseado nos cursos da Softblue

O JavaFX

  • JavaFX é uma tecnologia composta por um conjunto de APIs

  • Criação de rich client applications

– Ex: formulários, gráficos, multimídia, gráficos 2D e 3D, etc.

  • JavaFX é totalmente feito em Java

– Integração com as APIs do Java já conhecidas

– Suporte multiplataforma

Arquitetura do JavaFX

Arquitetura do JavaFX

Estrutura de cena

Estrutura de cena

Apenas uma cena pode estar visível por vez

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MainApp extends Application {
  public static void main(String[] args) {
    launch(args);
  }
  @Override
  public void init() {
    //...
  }
  @Override
  public void start(Stage primaryStage) {
    Button btn = new Button("Aperte aqui");
    StackPane root = new StackPane();
    root.getChildren().add(btn);
    Scene scene = new Scene(root, 400, 300);
    primaryStage.setTitle("JavaFX App");
    primaryStage.setScene(scene);
    primaryStage.show();
  }
} 

Hello World

Layout panes

  • Os nós devem ser organizados na tela na montagem da interface gráfica

  • A melhor forma de organizá-los é através dos painéis de layout

  • Tipos

– HBox

– VBox

– BorderPane

– AnchorPane

– StackPane

– GridPane

– FlowPane

– TilePane

HBox

  • Organiza os nós horizontalmente

HBox

1
2
HBox box = new HBox();
box.getChildren().add(node);

VBox

  • Organiza os nós verticalmente

Vbox

1
2
VBox box = new VBox();
box.getChildren().add(node);

BorderPane

  • 5 regiões: top, bottom, left, right, center

BorderPane

1
2
3
4
5
6
BorderPane pane = new BorderPane();
pane.setTop(node1);
pane.setBottom(node2);
pane.setLeft(node3);
pane.setRight(node4);
pane.setCenter(node5);

AnchorPane

  • Permite ancorar os nós nos cantos

AnchorPane

1
2
3
4
5
6
AnchorPane pane = new AnchorPane();
pane.getChildren().addAll(node1, node2);
AnchorPane.setRightAnchor(node1, 5.0);
AnchorPane.setTopAnchor(node1, 5.0);
AnchorPane.setLeftAnchor(node2, 5.0);
AnchorPane.setBottomAnchor(node2, 5.0);

StackPane

  • Empilha os nós

StackPane

1
2
3
4
StackPane pane = new StackPane();
pane.setAlignment(Pos.CENTER_RIGHT);
StackPane.setMargin(btn3, new Insets(20, 20, 0, 0));
pane.getChildren().addAll(node1, node2, node3);

GridPane

  • Organiza em linhas e colunas

GridPane

1
2
3
4
5
GridPane pane = new GridPane();
pane.add(node1, 0, 0);
pane.add(node2, 0, 1);
pane.add(node3, 1, 0);
pane.add(node4, 1, 1);

FlowPane

  • Organiza em linhas ou colunas e faz a quebra se não houver espaço

FlowPane

1
2
3
4
FlowPane pane = new FlowPane();
pane.setOrientation(Orientation.HORIZONTAL);
pane.getChildren().addAll(
node1, node2, node3, node4, node5, node6);

TilePane

  • Organiza os nós como o FlowPane, mas em células com o mesmo tamanho

TilePane

1
2
3
TilePane pane = new TilePane();
pane.setOrientation(Orientation.VERTICAL);
pane.getChildren().addAll(node1, node2, node3, node4, node5, node6);

Controles

Controles

Controles

Eventos

  • Eventos são ações disparadas em resposta a alguma ação do usuário

– Tecla pressionada, mouse clicado, janela redimensionada, etc.

  • Alguns exemplos

– KeyEvent

– MouseEvent

– ActionEvent

– WindowEvent

Event Handlers

  • Quando um evento é disparado, determinado código pode ser executado em resposta à ocorrência do evento

  • Este código é um event handler

1
2
3
4
5
6
7
Button btn = new Button("OK");
btn.setOnAction(new EventHandler<ActionEvent>() {
  @Override
  public void handle(ActionEvent event) {
    //...
  }
});
  • EventHandler é uma interface funcional

  • É possível utilizar expressões lambda

1
2
Button btn = new Button("OK");
btn.setOnAction(event -> doSomething());
Esta postagem está licenciada sob CC BY 4.0 pelo autor.