ArrayList

15 respostas
java
Paulosilv_123

Olá Pessoal, veja estou com uma duvida estou trabalhando com JavaFX e preenchi uma TableView com um Array, só que eu gostaria de pagar uma determinada linha com um Evento ao clicar no TableView desse meu TableView mas já fiz de tudo e não consegui como faço nesse caso?

15 Respostas

I

Com “pagar”, você queria dizer apagar? A classe ArrayList<E> implementa a interface List<E> que, possui os métodos remove(int index) e remove(Object obj), conforme a documentação Docs Oracle - List e Docs Oracle - ArrayList e que tu pode utilizar para remover itens de uma lista.

Paulosilv_123

entenda meu cenário, eu tenho alguns XML em uma Pasta eu abrir essa pasta e listei todos os XML dentro da pasta em uma TableView até aqui tranquilo, mas quando eu preciso selecionar o caminho da XML que esta em uma coluna da tableview eu não consigo.

String caminhoXML = TableView.getSelectionModel().getSelectedItem(); aí ele me pede pra que eu faço um objeto mas daí eu não sei como eu crio esse objeto pra setar o valor da linha do tableview, quando eu utilizado pegando do banco de dados fica tranquilo pra mim, mas assim eu não sei como faço !

I

O caminho do XML é provavelmente é uma String (eu não sei como você está fazendo para popular a lista) e, no Java, Strings são objetos. Se tu fizer: getSelectedItem().toString() não resolve?

j-menezes

É mais ou menos isso que você quer ?

TableView<MyDataType> table = new TableView<>();

table.setRowFactory(tv -> {
    TableRow<MyDataType> row = new TableRow<>();
    row.setOnMouseClicked(event -> {
        if (! row.isEmpty() && event.getButton()==MouseButton.PRIMARY 
             && event.getClickCount() == 2) {

            MyDataType clickedRow = row.getItem();
            printRow(clickedRow);
        }
    });
    return row ;
});
Paulosilv_123

tentei resolve não tentei String teste = Tbl_Prod.getSelectionModel().getSelectedItem().toString(); ai ele me imprime assim : ViewControle.FxmlInternas.VisualizaXMLController$ItensTbl@9824623

Paulosilv_123

vou tentar

Paulosilv_123

não resolveu, é tipo pegar o String da TableColumn e setar ela numa variável String!

Pra Ficar claro é assim eu tenho uma TableView que contem apenas uma coluna, nessa TableView ela ta recebendo uma ArrayList, contendo o nome do arquivos que estão dentro de uma determinada pasta, exemplo nota_de_compra.xml, aí eu gostaria de selecionar a String nota_de_compra.xml e setar ela numa String ou em um Label,

j-menezes

Você quer pegar a linha, a coluna, ou a celula da TableView ?

Paulosilv_123

quero pegar essa informação Sem%20teste

j-menezes

Pegar a informação clicando sobre ela ? ou atraves de um processamento externo ?

j-menezes

É parecido com isso ?

import javafx.application.Application;

import javafx.scene.Scene;
import javafx.scene.control.Button;

import javafx.scene.control.TableColumn;

import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.BorderPane;
 
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class TableFX extends Application {
    
    @Override
    public void start(Stage primaryStage) {
         
        
        TableView tableView = new TableView();
        tableView.setRowFactory(tv -> {
            TableRow<Person> row = new TableRow<>();            
                row.setOnMouseClicked(event -> {
                    
                    // Com duplo clique
                    // *******************
                    if (! row.isEmpty() && event.getButton()==MouseButton.PRIMARY 
                                && event.getClickCount() == 2) {

                        Person person = row.getItem();
                        System.out.println("Nome=" + person.getFirstName() +  "  Profissao=" + person.getWork() );
                       // printRow(clickedRow);
                    }
                });
                return row ;
        });

        

        TableColumn<String, Person> column1 = new TableColumn<>("Nome");
        column1.setCellValueFactory(new PropertyValueFactory<>("firstName"));
   

        TableColumn<String, Person> column2 = new TableColumn<>("Profissao");
        column2.setCellValueFactory(new PropertyValueFactory<>("work"));


        tableView.getColumns().add(column1);
        tableView.getColumns().add(column2);

        tableView.getItems().add(new Person("Jorge", "Desenhista"));
        tableView.getItems().add(new Person("Paulo", "Padeiro"));
        tableView.getItems().add(new Person("Tamires", "Programadora"));

        
        VBox vbox = new VBox(tableView);
        
        
        Button obtem = new Button("Obtem");
        obtem.setOnAction((e) -> { 
           
            Person person  = (Person)tableView.getItems().get(1);           
            System.out.println("Nome=" + person.getFirstName() +  "  Profissao=" + person.getWork() );            
        } );
        
        
        
        BorderPane bp = new BorderPane();
        bp.setCenter(vbox);
        bp.setBottom( obtem );
         

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

        primaryStage.setScene(scene);

        primaryStage.show();

        primaryStage.setTitle("TableView");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

        private String firstName = null;
        private String work = null;

        public Person() {
        }

        public Person(String firstName, String work) {
            this.firstName = firstName;
            this.work = work;
        }

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getWork() {
            return work;
        }

        public void setWork(String work) {
            this.work = work;
        }
    }
}
Paulosilv_123

Clicando sobre ela!

j-menezes

Então roda esse exemplo que passei, java 8.

Paulosilv_123

não deu certo, creio que seja porque eu não estou usando Objeto e sim usando Array puro já setando direto na TableViwer

j-menezes

Posta o codigo de forma resumida contendo o que de fato precisa ser visto, como no exemplo que te passei.

Criado 26 de outubro de 2019
Ultima resposta 26 de out. de 2019
Respostas 15
Participantes 3