下面的代码包含两个Listview,用户将从第一个列表视图中选择一个名称,当点击添加按钮时,它会将内容移动到第二个List视图应该更新并显示为的数组做出改变。
我认为我们通过将选择转换为字符串然后将其添加到数组来获得正确的想法。但是当试图打印阵列用于测试目的时,没有任何东西出现。
任何反馈或帮助将不胜感激
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);
}
}
答案 0 :(得分:2)
将项添加到普通列表不会导致更新被触发(ArrayList
没有注册任何侦听器的机制)。将项添加到ObservableList
将导致通知听众。
待办事项
String selectedItem = boxPlayers.getSelectionModel().getSelectedItem();
playersAvailable.remove(selectedItem);
teamOutput.add(selectedItem);