2014-11-24 88 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

相关问题