segunda-feira, 15 de junho de 2015

Ferramentas de Desenvolvimento


Para começar a desenvolver aplicativos com Java FX você primeiro precisa instalar o Java Development Kit – JDK , NetBeans ou Eclipse (sugestão do Pablo).

O Java vai depender da sua plataforma, isto é, seu sistema operacional e de quantos bits é sua arquitetura (32 ou 64 bits). Entre no sítio http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html e baixe o arquivo que corresponde a sua arquitetura.

Para fazer o download do Netbeans entre no sítio https://netbeans.org/downloads/ e escolha as versões Java EE ou Java SE.  Existe a opção de baixar o Netbeans junto com o ambiente de desenvolvimento Java. Isto fica a critério do desenvolvedor. 

Para fazer o download do Eclipse entre no sítio http://www.eclipse.org/downloads/ e baixe a versão para sua plataforma. 

Exemplo com FileChooser


FileChooser: Selecionando Arquivos
Neste exemplo iremos trabalhar com dois elementos: Button e FileChooser. Quando o usuário clicar no Button irá abrir uma caixa de diálogo e ele poderá selecionar um arquivo no disco. Neste exemplo usei o filtro para arquivos .csv somente para ilustração.

A Figura 1 e 2 ilustram como a aplicação fica após ser executada. 



        
Figura 1 e 2: Aplicação Desenvolvida

Listagem 1: Aplicação
/*
 * 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.
 */

import java.io.File;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;

/**
 *
 * @author alessandrovivas
 */
public class AbreArquivoFileChooser extends Application {

    @Override
    public void start(Stage primaryStage) {

        Button btn = new Button();
        btn.setText("Abrir arquivo");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                // cria um fileChooser para Selecionar o arquivo
                FileChooser teste = new FileChooser();

                // cria um fileChooser para Selecionar o arquivo
                teste.setTitle("Exemplo com FileChooser");
                // cria um fileChooser para Selecionar o arquivo
                teste.getExtensionFilters().add(new ExtensionFilter("CSV Files", "*.csv"));
                String currentDir = System.getProperty("user.home");
                System.out.println(currentDir);
                File userDirectory = new File(currentDir);
                teste.setInitialDirectory(userDirectory);
                // seleciona o arquivo
                File arquivo_csv = teste.showOpenDialog(primaryStage);

            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Java FX - Vivas!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

GridPane e Array de ToggleButton


Grid Pane e e Array de ToggleButton
Nesta aplicação iremos construir um painel com GridPane e adicionar um Array de ToggleButton na nossa aplicação. A Figura 1 apresenta a aplicação desenvolvida e a Listagem 1 apresenta o código para a criação do aplicativo. A diferença entre o ToggleButton e o Button é que o ToggleButton quando clicado gera um efeito gráfico de como se estivesse pressionado.



Figura 1: Aplicação Desenvolvida

Vamos utilizar o gerenciador de Layout GridPane e para criar o gerenciador de Layout basta utilizar o código a seguir.

GridPane gridPane = new GridPane();

Vamos precisar também de um array de Button e para isto utilizamos
ToggleButton[][] btn = new ToggleButton[5][5];

Para adicionar os buttons ao Layout precisamos utilizar o comando .add:
gridPane.add(btn[i][j], i, j);

Após isto precisamos adicionar o nosso Layout a Tela para ser mostrado:
Scene scene = new Scene(gridPane);
       
primaryStage.setTitle("Button e GridPane");
primaryStage.setScene(scene);
primaryStage.show();

O código completo está descrito na Listagem 2.

Listagem 2: GridPane e ToggleButton
            /*
 * 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 arraytogglebutton.gridpane;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author alessandrovivas
 */
public class ArrayToggleButtonGridPane extends Application {
   
    @Override
    public void start(Stage primaryStage) {
          // cria Layout Grid Pane
       GridPane gridPane = new GridPane();
            
       // cria um arrray de button
       ToggleButton[][] btn = new ToggleButton[5][5];
              
        
       //dois loops para adicionar os buttons ao layout
        for(int i=0; i<btn.length; i++){
                for(int j=0; j<btn.length;j++){
                      
                        //Initializing 2D buttons with values i,j
                        btn[i][j] = new ToggleButton(""+i+","+""+j);
                        btn[i][j].setPrefSize(50, 50);
                        gridPane.add(btn[i][j], i, j); 
                        }
        }
       
        Scene scene = new Scene(gridPane);
       
        primaryStage.setTitle("ToggleButton e GridPane");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
   
}

GridPane Layout e Array de Button


      Grid Pane e e Array de Button
Hoje estava com um problema para criar um array de buttons e adicioná-lo ao GridPane. Encontrei esta solução no site (http://zoranpavlovic.blogspot.com.br/2012/05/javafx-20-layouts-gridpane.html). Vou replicá-lo aqui, pois o resultado foi excelente. Vou criar variações deste modelo para postar outras soluções.

 
Nesta aplicação iremos construir um painel com GridPane e adicionar um Array de Buttons na nossa aplicação. A Figura 1 apresenta a aplicação desenvolvida e a Listagem 1 apresenta o código para a criação do aplicativo.



Figura 1: Aplicação Desenvolvida

Vamos utilizar o gerenciador de Layout GridPane e para criar o gerenciador de Layout basta utilizar o código a seguir.

GridPane gridPane = new GridPane();

Vamos precisar também de um array de Button e para isto utilizamos
Button[][] btn = new Button[5][5];

Para adicionar os buttons ao Layout precisamos utilizar o comando .add:
gridPane.add(btn[i][j], i, j);

Após isto precisamos adicionar o nosso Layout a Tela para ser mostrado:
Scene scene = new Scene(gridPane);
       
primaryStage.setTitle("Button e GridPane");
primaryStage.setScene(scene);
primaryStage.show();

O código completo está descrito na Listagem 1.

Listagem 1: Código da aplicação desenvolvida.
package arraycheckbox.gridpane;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author alessandrovivas
 */
public class ArrayCheckboxGridPane extends Application {
   
    @Override
    public void start(Stage primaryStage) {
       
       // cria Layout Grid Pane
       GridPane gridPane = new GridPane();
            
       // cria um arrray de button
       Button[][] btn = new Button[5][5];
              
        
       //dois loops para adicionar os buttons ao layout
        for(int i=0; i<btn.length; i++){
                for(int j=0; j<btn.length;j++){
                      
                        //Initializing 2D buttons with values i,j
                        btn[i][j] = new Button(""+i+","+""+j);
                        btn[i][j].setPrefSize(50, 50);
                        gridPane.add(btn[i][j], i, j); 
                        }
        }
       
        Scene scene = new Scene(gridPane);
       
        primaryStage.setTitle("Button e GridPane");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }