CheckBoxではなくRadioButtonを表示するcontrolsfx CheckListView(javafx ListViewコントロールでも同じ問題)があります。だから私はいくつかのjavafxチュートリアルの助けを借りてカスタムセルファクトリを実装しています。 問題は、最初のラジオボタンを選択して少し下にスクロールして、トップラジオボタンがスクロールアップされて表示されないようにすることです。それから、もう一度スクロールして、選択が消えました。javafx選択したセルを保持していないカスタムセルファクトリを持つListView
コードをデバッグするたびに、新しいセルが毎回作成されていることを理解していますが、それはこの問題につながりますが、残念ながら解決策を見つけられません。
私は同じ問題を抱えているスタックオーバーフローから得たサンプルコードを添付しています。
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);
}
}
}
}
この中ウル助けを必要としてください。(私はJavaFXの8を使用しています)
あなたは私の一日を救った。どうもありがとう。実際に私は同じことを試みたが、何とか途中で失われた。私はこれをあなたの知識に持っていきたいと思います。あなたのソリューションは動作していますが、最初のラジオボタンを選択すると、選択されていますが、11番目のラジオボタンのラウンド(10個のボタンが表示されている場合)も強調表示されています。 (選択されていないがフォーカスを得る)。今は問題ではありません。再度、感謝します。 –
http://imgur.com/EnfGCcP –
@SaravanaKumarなぜそれが起こるのか分かりますが、確実に再現することはできません。細胞の選択/フォーカスは、ややこしいことです。 –