Разделение и перемещение выбранного значения JList в строки JTable (SWING)

#java #swing #jtable #substring #jlist

#java #swing #jtable #подстрока #jlist

Вопрос:

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

Значения списка будут выглядеть следующим образом:

 123 Test St LA 1823 Yes
456 Test Dr NY 12345 No
  

Список получает значения из текстовых полей (адрес, состояние, почтовый индекс, для продажи) и устанавливает все это в одну строку строки, разделенную пробелами.

В таблице у меня 4 строки:

 |Address|State|Zip| For Sale|
|------  ----- --- ---------|
|       |     |   |         |  
  

Итак, чтобы сделать это, я должен разделить строковое значение из списка на пробел, но поскольку текстовое поле адреса содержит пробелы (т.Е. 123 Test St) в отличие от других текстовых полей, мне нужно найти способ разделить строку из списка, чтобы я мог задать адрес,Состояние, Zip и значение для продажи.

Вот мой фрагмент кода:

  private void addListActionPerformed(java.awt.event.ActionEvent evt) {                                          

    home.setAddress(address.getText());
    home.setState(state.getText());
    home.setZip(zip.getText()); 
    home.setSale(forSale.getText());

    String concat = home.getAddress()   " "  
                    home.getState()   " "  
                    home.getZip()   " "  
                    home.getSale();


    addVal(concat);

        address.setText("");    
        state.setText("");
        zip.setText("");
        forSale.setText("");

}    

private void addVal(String str) {
    jList1.setModel(dm);
    dm.addElement(str);
}

    private void addToTableActionPerformed(java.awt.event.ActionEvent evt) {                                            
    String s = jList1.getSelectedValue();
    //Split and set values and add to table
}  
  

Я мог бы использовать: String[] spaces = s.split(" ") , но тогда мне нужно было бы обработать значение адреса, поскольку оно также включает несколько пробелов, есть ли более простой способ сделать это? Любые советы будут оценены. Спасибо!

Ответ №1:

  • Заполните свой JList домашними объектами, а не объединенной строкой
  • Используйте средство визуализации пользовательских ячеек списка для отображения объединенной строки, полученной из домашних объектов в списке.
  • Затем, когда элемент в JList выбран, у вас есть полный домашний объект, а не строка, и создание вашей строки JTable должно быть тривиальным.