проблемы, чтобы вставить список запроса в выпадающий список - PullRequest
0 голосов
/ 04 июля 2019

При отладке наблюдаю, что результаты запроса в списке получают все значения из базы данных, но в моем контроллере появляется только последняя запись из моего списка. Я уже заметил, что проблема в моем контроллере, но я не знаю, как ее решить. Я думаю, что проблема в том, когда я просматриваю свой список.

мой DAO:

    List<Departamento> departamentos = new ArrayList();
    String query = "SELECT * FROM departamentos";
    try {
    PreparedStatement ps = con.prepareStatement(query);
    ResultSet rs = ps.executeQuery();
    while(rs.next()){
       Departamento departamento = new Departamento();
       departamento.setId_departamento(rs.getInt("id_departamentos"));
       departamento.setNome_setor(rs.getString("nome_setor"));
       departamentos.add(departamento);
    }
    ps.close();
    rs.close();
    }catch (SQLException ex) {
        Logger.getLogger(DepartamentoDAO.class.getName()).log(Level.SEVERE, null, ex);
    }
    return departamentos;
}

мой контроллер

@FXML
private JFXComboBox<Departamento> cbDepart;
private ObservableList<Departamento> obsDepartamentos;
public void initialize(URL url, ResourceBundle rb) {
    DepartamentoDAO dao = new DepartamentoDAO();
    for(Departamento d: dao.read()){
       obsDepartamentos = FXCollections.observableArrayList(d);
       cbDepart.setItems(obsDepartamentos);
    }
}

моя модель:

public class Departamento {

private int id_departamento, idchefe;
private String nome_setor;

public Departamento(int id_departamento, int idchefe, String nome_setor) {
    this.id_departamento = id_departamento;
    this.idchefe = idchefe;
    this.nome_setor = nome_setor;
}

public Departamento(String nome_setor) {
    this.nome_setor = nome_setor;
}

public Departamento(int id_departamento) {
    this.id_departamento = id_departamento;
}

public Departamento(int id_departamento, String nome_setor) {
    this.id_departamento = id_departamento;
    this.nome_setor = nome_setor;
}

public Departamento() {
}

public int getIdchefe() {
    return idchefe;
}

public void setIdchefe(int idchefe) {
    this.idchefe = idchefe;
}

public int getId_departamento() {
    return id_departamento;
}

public void setId_departamento(int id_departamento) {
    this.id_departamento = id_departamento;
}

public String getNome_setor() {
    return nome_setor;
}

public void setNome_setor(String nome_setor) {
    this.nome_setor = nome_setor;
}

public String toString() {
    return getNome_setor();
}
}

DepartamentoDAO dao = new DepartamentoDAO();
for(Departamento d: dao.read()){
   obsDepartamentos = FXCollections.observableArrayList(d);
   cbDepart.setItems(obsDepartamentos);
}

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Вы добавляете один элемент в список, а затем назначаете его на cbDepart, чтобы отображался только последний элемент, поэтому вам нужно сначала populate the list, а затем назначить его в конце.

@FXML
private JFXComboBox<Departamento> cbDepart;
private ObservableList<Departamento> obsDepartamentos;
public void initialize(URL url, ResourceBundle rb) {
    DepartamentoDAO dao = new DepartamentoDAO();
    obsDepartamentos = FXCollections.observableArrayList();
    for(Departamento d: dao.read()){
       obsDepartamentos.add(d);
    }
    cbDepart.setItems(obsDepartamentos);
}

ИЛИ просто:

 public void initialize(URL url, ResourceBundle rb) {
        DepartamentoDAO dao = new DepartamentoDAO();
        obsDepartamentos = FXCollections.observableArrayList(dao.read());
        cbDepart.setItems(obsDepartamentos);
 }
2 голосов
/ 04 июля 2019

Вы создаете новый ArrayList во время каждого цикла.

Вместо

DepartamentoDAO dao = new DepartamentoDAO();
for(Departamento d: dao.read()){
   obsDepartamentos = FXCollections.observableArrayList(d);
   cbDepart.setItems(obsDepartamentos);
}

try

DepartamentoDAO dao = new DepartamentoDAO();
obsDepartamentos = FXCollections.observableArrayList(dao.read());
cbDepart.setItems(obsDepartamentos);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...