listview - controles - oracle combobox javafx
Selección múltiple de JavaFX ListView (1)
Si solo quiere saber qué elementos están seleccionados, eche un vistazo a mi ejemplo. Eche un vistazo al método setOnMouseClicked () ..
package application;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Pane root = new Pane();
Scene scene = new Scene(root,600,600);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
ListView<String> listView = new ListView<String>();
ObservableList<String> list = FXCollections.observableArrayList();
listView.setItems(list);
list.add("item1");
list.add("item2");
list.add("item3");
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
listView.setOnMouseClicked(new EventHandler<Event>() {
@Override
public void handle(Event event) {
ObservableList<String> selectedItems = listView.getSelectionModel().getSelectedItems();
for(String s : selectedItems){
System.out.println("selected item " + s);
}
}
});
list.add("item4");
root.getChildren().add(listView);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Quiero seleccionar varios elementos de ListView. Reaccionaría al hacer clic con el mouse. Intenté con esto:
selectedLogsList.addAll(logsListView.getSelectionModel().getSelectedItems());
pero me estaba dando duplicados. Así que probé esto:
logsListView.getSelectionModel().selectedItemProperty().addListener(
new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> ov,
String old_val, String new_val) {
if(selectedLogsList.contains(new_val)) {
selectedLogsList.remove(new_val);
} else {
selectedLogsList.add(new_val);
}
}
});
También me gustaría que, si se selecciona la celda, debería marcarse como tal (color de fondo diferente) ¡Gracias!