sábado, 17 de fevereiro de 2018

Javafx - obtendo valores em listview

Um objeto ListView apresenta ao usuário uma lista
de rolagem de itens de texto,  estas rolagens podem
ser orientadas horizontalmente ou verticalmente 
como é nosso caso.
Apresento aqui um exemplo de como obter 

cada item do ListView individualmente.

Veja abaixo uma imagem do programa em execução:




 Veja abaixo o código do programa:


import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.ListView;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;

public class PROJETO extends Application {
     static int i;
     static String str = "";
     static String str1 = "";
     static String [ ] st = { "Um", "Dois", "Tres", "Quatro", "Cinco", "Seis",
         "Sete", "Oito", "Nove", "Dez", "Onze", "Doze", "Viva_Java" };
     static ObservableList < String > numeros_1 = FXCollections
              .observableArrayList ( st );
     static ListView < String > numListView_1 = new ListView <> ( numeros_1 );
     static Pane root = new Pane ( );
     static Canvas canvas = new Canvas ( 620, 350 );
     static GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     static Scene scene = new Scene ( root, 620, 350, Color.WHITE );
     static GridPane grid_1 = new GridPane ( );
     // /////////////////////////////////////////////////////////////////////////
     public static void List_View_1 ( ) {
         numListView_1.getSelectionModel ( ).selectedIndexProperty ( )
         .addListener ( new ChangeListener < Number > ( ) {
              @SuppressWarnings ( "rawtypes" )
              public void changed ( ObservableValue ov, Number value,
                        Number new_value ) {
                   str = st [ new_value.intValue ( ) ];
                   str1 = "";
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 270, 100, 400, 50 );
                   ctx.clearRect ( 270, 130, 500, 50 );
                   ctx.clearRect ( 270, 160, 500, 50 );
                   ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL,15 ) );                            
                   i = new_value.intValue ( );
                   ctx.setFill ( Color.BLACK );
                   ctx.fillText ( "Palavra => ", 290, 120 );
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( " " + str, 370, 120 );
                   ctx.setFill ( Color.BLACK );
                   ctx.fillText ( "Abaixo a string indexada", 290, 150 );
                   ctx.setFill ( Color.RED );
                   for ( i = 0; i < str.length ( ); ++i ) {
                        char c = str.charAt ( i );
                        str1 += c + "  ";
                   }          
                   int quant = 0;
                   for ( int i = 0; i < str.length ( ); i++ )
                        if ( str.charAt ( i ) != ' ' )
                            quant++;
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( str1, 290, 180 );
                   System.out.println ( quant );
                   ctx.setFill ( Color.BLUE );
                   ctx.fillText ( "A string tem ", 290, 210 );           
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( " " + quant, 375, 210 );
                   ctx.setFill ( Color.BLUE );
                   ctx.fillText ( "caracteres", 395, 210 ); 
              }            
         } );
         grid_1.setHgap ( 10 );
         grid_1.setVgap ( 50 );
         grid_1.setPadding ( new Insets ( 5 ) );
         //Largura máximo do ListView
         numListView_1.setPrefWidth ( 200 );
         //Altura máxima do ListView
         numListView_1.setPrefHeight ( 120 );
         numListView_1.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 2;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: red;" );
         grid_1.add ( numListView_1, 5, 2 );
         root.getChildren ( ).add ( grid_1 );
     }
     // /////////////////////////////////////////////////////////////////////////
     @Override
     public void start ( Stage stage ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         stage.setTitle ( "JAVAFX - OBTENDO VALORES EM LISTVIEW" );
         //Criando moldura e dando efeitos
         root.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 12;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: red;" );

         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - OBTENDO VALORES EM LISTVIEW", 140, 50 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Escolha uma palavra no listview", 190, 80 );
         root.getChildren ( ).addAll ( canvas );
         List_View_1 ( );      
         stage.setScene ( scene );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) {
         launch ( args );
     }
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.