में स्क्रॉल करते हैं, मैं दो टेबलव्यू एक साथ बांधना चाहता हूं जैसे कि वे सिंक में स्क्रॉल करते हैं। मैं उसको कैसे करू? मैं तालिकादृश्य के स्क्रॉलबार तक पहुंचने का तरीका जानने में असमर्थ हूं।दो टेबलव्यू एक साथ बाध्यकारी जैसे कि वे सिंक
उत्तर
मुझे नहीं लगता कि यह वर्तमान में संभव है। TableViewSkin वर्चुअलकॉन्टेनरबेस से विरासत में है जिसमें वर्चुअलफ्लो फ़ील्ड है। वर्चुअलफ्लो ऑब्जेक्ट में दो वर्चुअलस्क्रोलबार फ़ील्ड, हबर और vbar हैं जो आप के बाद हैं। हालांकि मुझे इसे पाने का कोई तरीका नहीं दिख रहा है।
दिलचस्प बात यह है कि टेबलव्यू में एक निजी सामग्रीविड्थ फ़ील्ड भी है हालांकि यह निजी है। मुझे यकीन है कि जेएफएक्स टीम बहुत अधिक एपीआई खोलने के बारे में अति सतर्क है जो समझ में आता है। आप सामग्री प्राप्त करने के लिए कह सकते हैं WIDTH फ़ील्ड जेएफएक्स जेआईआरए या ओपनजेएफएक्स-डीई मेलिंग सूची पर फीचर अनुरोध के रूप में एक इंट प्रॉपर्टी के रूप में खोला गया है।
एक स्टॉप गैप उपाय तालिका दृश्य चयन मॉडल के चयनित आइटम या इंडेक्स प्रॉपर्टी को बाध्य करना होगा।
मैंने बाहरी स्क्रॉलबार के साथ एक टेबलव्यू बांधने के लिए एक सीएसएस हैक बनाया है। एक स्क्रॉलबार दोनों टेबलव्यू को नियंत्रित करता है।
मेरा विचार का अवलोकन:
- दो tableviews
- एक कार्यक्षेत्र स्क्रॉलबार बनाने बनाएँ। इसे इस उदाहरण
- मिनट और myScrollbar के मिनट के आकार के अधिकतम सेट में myScrollbar कहते हैं = 0, अधिकतम = TableView.Items.size()
- जब myScrollbar परिवर्तन का मूल्य तो दोनों tableview के scrollTo (int) कहते हैं फ़ंक्शन
- सीएसएस के साथ लागू तालिकादृश्य के मूल लंबवत स्क्रॉलबार को अक्षम करें।
यह आपको दो टेबल देगा, दोनों एक बाहरी स्क्रॉलबार (myScrollbar) द्वारा नियंत्रित किया जाएगा।
/* The main scrollbar **track** CSS class */
.mytableview .scroll-bar:vertical .track{
-fx-padding:0px;
-fx-background-color:transparent;
-fx-border-color:transparent;
-fx-background-radius: 0em;
-fx-border-radius:2em;
}
/* The increment and decrement button CSS class of scrollbar */
.mytableview .scroll-bar:vertical .increment-button ,
.mytableview .scroll-bar:vertical .decrement-button {
-fx-background-color:transparent;
-fx-background-radius: 0em;
-fx-padding:0 0 0 0;
}
.mytableview .scroll-bar:vertical .increment-arrow,
.mytableview .scroll-bar:vertical .decrement-arrow
{
-fx-shape: " ";
-fx-padding:0;
}
/* The main scrollbar **thumb** CSS class which we drag every time (movable) */
.mytableview .scroll-bar:vertical .thumb {
-fx-background-color:transparent;
-fx-background-insets: 0, 0, 0;
-fx-background-radius: 2em;
-fx-padding:0px;
}
फिर हम स्क्रॉलबार का उपयोग करके tableview स्क्रॉल करने के लिए कैसे निर्धारित करने की आवश्यकता:
यहाँ एक tableview सीएसएस का उपयोग करने का स्क्रॉलबार को छिपाने के लिए कोड है।
scroll.setMax(100); //make sure the max is equal to the size of the table row data.
scroll.setMin(0);
scroll.valueProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue ov, Number t, Number t1) {
//Scroll your tableview according to the table row index
table1.scrollTo(t1.intValue());
table2.scrollTo(t1.intValue());
}
});
http://blog.ngopal.com.np/2012/09/25/how-to-bind-vertical-scroll-in-multi-tableview/
समाधान बहुत अच्छा लग रहा है।इसे एक पोस्ट के रूप में लिखें ताकि यह स्टैक ओवरफ़्लो पर संग्रहीत हो और मैं आपको बक्षीस दूंगा। –
धन्यवाद..और चीयर्स :) – privatejava
सबसे आसान तरीका है मैं इस समस्या को हल करने के मिल गया है दिखाई की valueProperty एक छिपा स्क्रॉलबार बाध्य करने के लिए है।
// Controller
@FXML private TableView<MyBean> tableLeft;
@FXML private TableView<MyBean> tableRight;
@FXML private ScrollBar scrollBar;
@SuppressWarnings("rawtypes")
private void bindScrollBars(TableView<?> tableView1, TableView<?> tableView2,
ScrollBar scrollBar, Orientation orientation) {
// Get the scrollbar of first table
VirtualFlow vf = (VirtualFlow)tableView1.getChildrenUnmodifiable().get(1);
ScrollBar scrollBar1 = null;
for (final Node subNode: vf.getChildrenUnmodifiable()) {
if (subNode instanceof ScrollBar &&
((ScrollBar)subNode).getOrientation() == orientation) {
scrollBar1 = (ScrollBar)subNode;
}
}
// Get the scrollbar of second table
vf = (VirtualFlow)tableView2.getChildrenUnmodifiable().get(1);
ScrollBar scrollBar2 = null;
for (final Node subNode: vf.getChildrenUnmodifiable()) {
if (subNode instanceof ScrollBar &&
((ScrollBar)subNode).getOrientation() == orientation) {
scrollBar2 = (ScrollBar)subNode;
}
}
// Set min/max of visible scrollbar to min/max of a table scrollbar
scrollBar.setMin(scrollBar1.getMin());
scrollBar.setMax(scrollBar1.getMax());
// bind the hidden scrollbar valueProterty the visible scrollbar
scrollBar.valueProperty().bindBidirectional(scrollBar1.valueProperty());
scrollBar.valueProperty().bindBidirectional(scrollBar2.valueProperty());
}
/*
* This method must be called in Application.start() after the stage is shown,
* because the hidden scrollbars exist only when the tables are rendered
*/
public void setScrollBarBinding() {
bindScrollBars(this.tableLeft, this.tableRight, this.scrollBar, Orientation.VERTICAL);
}
अब आप चरण दिखाया गया है के बाद आवेदन से बाध्यकारी कॉल करनी होगी और टेबल प्रदान की जाती हैं:
// Application
private MyController controller;
@Override
public void start(Stage primaryStage) {
try {
FXMLLoader fxmlLoader = new FXMLLoader(SalesApp.class.getResource("scene.fxml"));
BorderPane root = (BorderPane) fxmlLoader.load();;
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("app.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
controller = (MyController) fxmlLoader.getController();
controller.setScrollBarBinding();
} catch(Exception e) {
e.printStackTrace();
}
}
अब टेबल माउस, कुंजी, या स्क्रॉलबार के माध्यम से तुल्यकालिक स्क्रॉल करना चाहिए।
मज़े करें, ओलाफ
- 1. एक ही टेबलव्यू में दो सरणी कैसे लोड करें?
- 2. $ मार्ग के साथ दो-तरफा बाध्यकारी पैराम?
- 3. दो पदानुक्रमों की एक तरफा सिंक
- 4. दो तारों को कैसे जोड़ना है जैसे कि वे संख्याएं हैं?
- 5. टेबलव्यू
- 6. (आईफोन) टेबलव्यू
- 7. दो तरह बाध्यकारी सेटिंग्स समस्या
- 8. डब्ल्यूपीएफ दो-तरफा बाध्यकारी एक्सएमएल
- 9. जावास्क्रिप्ट सिंक दो एरे (ऑब्जेक्ट्स)/डेल्टा
- 10. आप एक दूसरे के साथ सिंक में दो संबंधित, लेकिन अलग, सिस्टम कैसे रखते हैं?
- 11. दो मानों के लिए बाध्यकारी
- 12. दो डेटाबेस के बीच MySQL डेटाबेस सिंक
- 13. वर्तमान डेटाकॉन्टेक्स्ट के साथ IValueConverter का उपयोग दो-तरफा बाध्यकारी
- 14. टेक्स्टबॉक्स पर स्ट्रिंगफॉर्मेट के साथ दो बार बाध्यकारी
- 15. निर्धारित करें कि कोई टेबलव्यू सेल दिखाई दे रहा है
- 16. दो या दो से अधिक Mercurial सर्वर सिंक कैसे करें?
- 17. तीन.जेएस - दो आकार एक साथ बांधें?
- 18. प्रोटोकॉल घोषित करना जैसे कि @class
- 19. सी #: इतना है कि वे व्युत्पन्न वर्ग
- 20. Angular.js: दो-तरफा बाध्यकारी एनजी-दोहराना
- 21. क्या सबवर्सन क्लाइंट (svn) प्रतीकात्मक लिंक को खराब कर सकता है जैसे कि वे फाइलें थे?
- 22. दो फाइलों को दो रिपोजिटरी के बीच सिंक में रखना - प्रतीकात्मक लिंक? या एक और तरीका?
- 23. एंड्रॉइड सिंक एडाप्टर सिंक रोकें
- 24. एक WPF का उपयोग कर दो आदेश पैरामीटर बाध्यकारी पासिंग
- 25. basicHttp बाइंडिंग और webHttp एक साथ बाध्यकारी
- 26. सी अंतर्निहित रूपांतरण क्यों करते हैं जैसे वे करते हैं?
- 27. एक बाध्यकारी
- 28. मेरा .NET Int64 का व्यवहार क्यों होता है जैसे कि वे Int32 थे?
- 29. एसक्यूएल डीबी के साथ सिंक फ्रेमवर्क:
- 30. स्टोरीबोर्ड नेविगेशन कंट्रोलर बिना टेबलव्यू कंट्रोलर
इनपुट के लिए धन्यवाद। नकारात्मक उत्तरों को स्वीकार करने के लिए कस्टम क्या है? मुझे नहीं पता कि यह वास्तव में असंभव है या नहीं - और यह साबित करना निश्चित रूप से असंभव है। कम से कम छह और दिन इंतजार करेंगे। –