Ich habe eine controlsfx CheckListView (sogar das gleiche Problem mit javafx ListView-Steuerelement), wo ich RadioButtons anstelle von CheckBox anzeigen möchten. Also habe ich die benutzerdefinierte Zellen-Factory implementiert, indem ich Hilfe von wenigen Javafx-Tutorials genommen habe, und es funktioniert. Das Problem ist, dass ich die erste Radio-Taste ausgewählt habe und ein wenig nach unten scrollen, so dass einige meiner oberen Radio-Taste nach oben gescrollt werden und jetzt nicht sichtbar sind. Dann bin ich wieder hochgescrollt, die Auswahl ist jetzt weg.javafx ListView mit benutzerdefinierten Zelle Fabrik nicht die ausgewählte Zelle
Ich debugge den Code verstehen, dass neue Zellen jedes Mal erstellt werden, und das führt zu diesem Problem, aber leider kann die Lösung nicht herausfinden.
Ich füge einen Beispielcode an, den ich vom Stapelüberlauf bekommen habe, der das gleiche Problem hat.
package application;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class RadioButtonListView extends Application {
public static final ObservableList names = FXCollections.observableArrayList();
private ToggleGroup group = new ToggleGroup();
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("List View Sample");
final ListView listView = new ListView();
listView.setPrefSize(200, 250);
listView.setEditable(true);
names.addAll("Adam", "Alex", "Alfred", "Albert", "Brenda", "Connie", "Derek", "Donny", "Lynne", "Myrtle", "Rose", "Rudolph", "Tony", "Trudy", "Williams", "Zach");
listView.setItems(names);
listView.setCellFactory(param -> new RadioListCell());
StackPane root = new StackPane();
root.getChildren().add(listView);
primaryStage.setScene(new Scene(root, 200, 250));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
private class RadioListCell extends ListCell<String> {
@Override
public void updateItem(String obj, boolean empty) {
super.updateItem(obj, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
RadioButton radioButton = new RadioButton(obj);
radioButton.setToggleGroup(group);
// Add Listeners if any
setGraphic(radioButton);
}
}
}
}
Bitte braucht Hilfe ur in diesem. (Ich verwende javafx 8)
Sie haben meinen Tag gerettet. Danke vielmals. Eigentlich habe ich das gleiche versucht aber irgendwie in der Mitte verloren. Ich möchte dies zu Ihrem Wissen bringen. Ihre Lösung funktioniert, aber wenn ich das erste Optionsfeld anwähle, wird es ausgewählt, aber auch die Runde des 11. Optionsfelds (wenn 10 Schaltflächen sichtbar sind) wird hervorgehoben. (nicht ausgewählt, sondern den Fokus erhalten). Im Moment kein Problem. Danke noch einmal. –
http://imgur.com/EnfGCcP –
@SaravanaKumar Ich kann sehen, warum das passieren würde, aber ich kann es nicht zuverlässig reproduzieren. Auswahl/Fokus in Zellen ist etwas schwierig. –