पर क्लिक करें मैं JavaFX एप्लिकेशन में ListView नियंत्रण का उपयोग कर रहा हूं। यह बहु चयन चयन मोड के लिए सेट है। मैं एक उपयोगकर्ता के रूप में जानता हूं, मैं इसे किसी आइटम को अचयनित करने के लिए Ctrl- क्लिक कर सकता हूं, लेकिन यह मेरे उपयोगकर्ताओं के लिए सहज नहीं है। मैं इसे अचयनित करने के लिए दूसरी बार क्लिक करने का एक तरीका चाहता हूं। दूसरे शब्दों में एक बार क्लिक करें - चुनें; चयनित आइटम पर क्लिक करें और यह अचयनित हो जाता है।एक javafx सूची दृश्य पर किसी आइटम को अचयनित करें
मैंने एक चेंजलिस्टर और ऑन-हाउसस्क्टेड ईवेंट दोनों का उपयोग करने का प्रयास किया है। न तो बहुत अच्छी तरह से काम करता है। नीचे प्रत्येक के कोड स्निपेट हैं।
ChangeListener:
प्रभाव - सूची में पहला आइटम कभी नहीं चुना गया है। मैं उस पर क्लिक करता हूं और यह अनजान रहता है। आइटम पर कोई प्रभाव नहीं 2..n
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<SpecificAlgorithmData>() {
@Override
public void changed(final ObservableValue observableValue, final SpecificAlgorithmData oldData, final SpecificAlgorithmData newData) {
//if already selected then deselect it
int selectedIndex = listView.getSelectionModel().getSelectedIndex();
System.out.println("selected " + selectedIndex);
System.out.println("all selected" + listView.getSelectionModel().getSelectedIndices());
if (!selecting && !listView.getSelectionModel().getSelectedIndices().contains(selectedIndex)){
Iterator <Integer> iterator = listView.getSelectionModel().getSelectedIndices().iterator();
selecting = true;
listView.getSelectionModel().select(-1);//deselect all
while (iterator.hasNext()){
int index = iterator.next();
if (index!= selectedIndex){
listView.getSelectionModel().select(index);
}
}
selecting = false;
}
}
}
onClick:
कोई प्रभाव नहीं है, क्योंकि मुझे यकीन है कि कैसे एक मैं सिर्फ क्लिक किया के सूचकांक पाने के लिए नहीं कर रहा हूँ। कठिन होने के नाते कोडित, यह बस कभी का चयन आइटम 2.
listView.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent mouseEvent) {
int selectedItem = 2; //FIXME: How to I get the index of clicked item?
if (listView.getSelectionModel().isSelected(selectedItem)){
listView.getSelectionModel().clearSelection(selectedItem);
}
}
});
कैसे उन कई आइटम चुन सकता हूँ? –
अभी वे नहीं जानते कि वे Ctrl-click के साथ समस्या हो सकती है। मैं चाहता हूं कि वे सिर्फ एक क्लिक (कोई Ctrl कुंजी) के साथ चयन और चयन रद्द करने में सक्षम न हों। –
"Ctrl + Click" का उपयोग कई जीयूआई वेब/डेस्कटॉप अनुप्रयोगों पर एक आम उपयोगकर्ता अनुभव है। आप कृपया इसे अपने उपयोगकर्ताओं को पेश कर सकते हैं। वैकल्पिक रूप से आप सूची कक्षों पर चेकबॉक्स डाल सकते हैं, जो अधिक सहज हो सकता है। –