2014-11-24 89 views
1

下面的代碼包含兩個ListView,用戶將從第一個列表視圖中選擇一個名稱,當添加按鈕被選中時,它會將內容移動到一個數組第二個List視圖應該在更改時進行更新和顯示。將用戶的選擇從一個ListView移動到另一個ListView Java FX

我認爲我們有正確的想法,將選擇轉換爲字符串,然後將其添加到數組。但是當試圖爲測試目的而打印數組時,什麼都沒有出現。

任何反饋或幫助將不勝感激

package poolproject; 

import java.net.URL; 
import java.util.ArrayList; 
import java.util.ResourceBundle; 
import javafx.beans.value.ChangeListener; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.ListView; 

/** 
* 
* @author Alex 
*/ 
public class FXMLDocumentController implements Initializable { 

    @FXML 
    private Button BtnAdd; 

    @FXML 
    private ListView<String> boxTeam; 

    @FXML 
    private ListView<String> boxPlayers; 

    ArrayList<String> team= new ArrayList(); 
    String player; 

    final ObservableList<String> playersAvailable = FXCollections.observableArrayList(
      "Kardi","Gilmore","Clark"); 

    final ObservableList<String> teamOutput = FXCollections.observableArrayList(team); 

    @FXML 
    private void deleteAction(ActionEvent action){ 
     int selectedItem = boxPlayers.getSelectionModel().getSelectedIndex(); 
     player = Integer.toString(selectedItem); 
     team.add(player); 

     playersAvailable.remove(selectedItem); 
    } 


    @Override 
    public void initialize(URL url, ResourceBundle rb) { 

     boxPlayers.setItems(playersAvailable); 
     boxTeam.setItems(teamOutput); 


    }  

} 

回答

2

添加項目到普通列表不會導致被解僱的更新(在ArrayList沒有一個機制來註冊任何監聽器)。將項目添加到ObservableList將使偵聽器得到通知。

String selectedItem = boxPlayers.getSelectionModel().getSelectedItem(); 
playersAvailable.remove(selectedItem); 
teamOutput.add(selectedItem); 
+0

你的先生,是一個紳士和學者謝謝。 該解決方案完美運作 – 2014-11-25 00:05:52

相關問題