0

我的程序显示一个包含 3 列的表格。当我单击列的标题时,TableView 的内容没有被排序。

如果我从本教程中理解正确(请参阅按列排序数据),我不需要执行任何特殊实现即可使用表的排序机制。

FXML:

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" fx:controller="br.meuspila.javafx.ListarCorretorasController">
  <children>
    <TableView fx:id="tabelaCorretoras" prefHeight="400.0" prefWidth="600.0">
      <columns>
        <TableColumn prefWidth="150.0" text="Nome" fx:id="colunaNome" />
        <TableColumn prefWidth="75.0" text="Código" fx:id="colunaCodigo" />
        <TableColumn prefWidth="200.0" text="Descrição" fx:id="colunaDescricao" />
      </columns>
    </TableView>
  </children>
</AnchorPane>

控制器:

package br.meuspila.javafx;

import br.meuspila.db.Corretora;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

/**
 * FXML Controller class
 */
public class ListarCorretorasController implements Initializable {

    @FXML //  fx:id="tabelaCorretoras"
    private TableView<Corretora> tabelaCorretoras; // Value injected by FXMLLoader
    @FXML //  fx:id="colunaNome"
    private TableColumn<Corretora,String> colunaNome; // Value injected by FXMLLoader
    @FXML //  fx:id="colunaCodigo"
    private TableColumn<Corretora,String> colunaCodigo; // Value injected by FXMLLoader
    @FXML //  fx:id="colunaDescricao"
    private TableColumn<Corretora,String> colunaDescricao; // Value injected by FXMLLoader


    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        colunaNome.setCellValueFactory(new PropertyValueFactory<Corretora,String>("nome"));
        colunaCodigo.setCellValueFactory(new PropertyValueFactory<Corretora,String>("codigo"));
        colunaDescricao.setCellValueFactory(new PropertyValueFactory<Corretora,String>("descricao"));

        ObservableList<Corretora> list = FXCollections.observableArrayList();
        Corretora c1 = new Corretora();
        c1.setNome("RICO");
        c1.setCodigo("1234");
        c1.setDescricao("Testando, 123");
        list.add(c1);
        Corretora c2 = new Corretora();
        c2.setNome("MIRAE");
        c2.setCodigo("4321");
        c2.setDescricao("Mirae 123 testando");
        list.add(c2);

        tabelaCorretoras.setItems(list);
    }    
}

实体/模型:

package br.meuspila.db;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name = "CORRETORA")
@NamedQueries({
    @NamedQuery(name = "Corretora.findAll", query = "SELECT c FROM Corretora c"),
    @NamedQuery(name = "Corretora.findById", query = "SELECT c FROM Corretora c WHERE c.id = :id"),
    @NamedQuery(name = "Corretora.findByNome", query = "SELECT c FROM Corretora c WHERE c.nome = :nome"),
    @NamedQuery(name = "Corretora.findByCodigo", query = "SELECT c FROM Corretora c WHERE c.codigo = :codigo"),
    @NamedQuery(name = "Corretora.findByDescricao", query = "SELECT c FROM Corretora c WHERE c.descricao = :descricao")})
public class Corretora implements EntityInterface<Corretora>, Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Long id;

    @Basic(optional = false)
    @Column(name = "NOME")
    private String nome;

    @Column(name = "CODIGO")
    private String codigo = "";

    @Column(name = "DESCRICAO")
    private String descricao = "";

    public Corretora() {
    }

    public Corretora(Long id) {
        this.id = id;
    }

    public Corretora(Long id, String nome) {
        this.id = id;
        this.nome = nome;
    }

    @Override
    public Long getId() {
        return id;
    }

    @Override
    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Corretora)) {
            return false;
        }
        Corretora other = (Corretora) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.meuspila.entity.Corretora[ id=" + id + " ]";
    }

    @Override
    public Corretora clone() {
        Corretora copy = new Corretora();
        copy.setCodigo(this.getCodigo());
        copy.setDescricao(this.getDescricao());
        copy.setId(this.getId());
        copy.setNome(this.getNome());
        return copy;
    }

}
4

0 回答 0