जावा स्विंग - JScrollPane का उपयोग करना और इसे वापस ऊपर स्क्रॉल करना


82

मैं JScrollPane का उपयोग एक JFrame में स्क्रॉल करने की अनुमति देने के लिए करता हूं जिसमें एक पाठ घटक होता है जो पाठ संपादक के रूप में सेवारत होता है। मैं इस संपादक में पाठ सेट करने के बाद क्या करना चाहता हूं, क्या यह शीर्ष पर वापस स्क्रॉल है, इसलिए आप देख सकते हैं कि फ़ाइल की शुरुआत में क्या है।

क्या किसी को भी यह करना आता है?

java  swing 

जवाबों:


136

आपके पाठ घटक पर setCaretPosition (0) को कॉल करने से यह शीर्ष पर स्क्रॉल हो जाएगा।


आप सही हैं, समस्या यह थी कि टेक्स्ट घटक के अंत में कैरेट था। यह टेक्स्ट एडिटर पर 'सेटटेक्स्ट (...)' कहने के बाद भी काम करता है। (JSCrollPane के अंदर टेक्स्ट पैनल के रूप में JEditorPane उदाहरण के साथ परीक्षण किया गया)।
गिलाउल

37

बस के मामले में आप एक पाठ घटक का उपयोग नहीं कर रहे हैं यहाँ तैनात धागे पर एक नज़र रखना .... एक JScrollPane पर स्क्रॉल बार सेट करना

उनका समाधान इनवोकलेटर के माध्यम से एक धागे को बंद करना है

final JScrollPane scroll = new JScrollPane(text);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
   public void run() { 
       scroll.getVerticalScrollBar().setValue(0);
   }
});

1
यह मेरे प्रश्न का सबसे निकटतम उत्तर है .. stackoverflow.com/questions/42961012/… हालाँकि, JScrollPane के अंदर पैनल होने पर इस पद्धति का उपयोग कैसे किया जा सकता है?
युवा चोंग

3
invokeLaterएक थ्रेड को स्पिन नहीं करता है, यह केवल वर्तमान ईवेंट (जैसे बटन क्लिक, या जो भी उस कोड का संदर्भ है जो कॉल करता है invokeLater) के बाद निष्पादित होने वाली घटना की पुष्टि करता है और किसी भी अन्य पहले से ही लागू घटनाओं को समाप्त करता है।
रेडियोडैफ

10

यह काम करेगा:

DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);

9

आप अपने पाठ घटक के setCaretPosition(0)ठीक बाद विधि का उपयोग कर सकते हैं setText(String t)


1
@ क्रेग के पहले वाले उत्तर की प्रति।
कार्ल रिक्टर


7

आप यह कोशिश कर सकते हैं:

 scrollPane.getViewport().setViewPosition(new Point(0,0));

JavaDocs setViewPosition के अनुसार (इस तरह व्यवहार करता है:

व्यूपोर्ट के ऊपरी बाएं कोने में दिखाई देने वाले निर्देशांक सेट करता है, अगर कोई दृश्य नहीं है, तो कुछ भी नहीं करता है।


4
यह मेरे लिए काम नहीं किया - स्क्रॉलपैन शीर्ष पर कूदता है, फिर तुरंत नीचे फिर से नीचे चला जाता है।
जूलरड

इसने मेरे लिए काम किया worked \ _ (ツ) _ / a मेरे JScrollPane के अंदर एक JTable है।
मकाटो

@jwoolard हां, यहां प्रस्तुत समाधान मेरे द्वारा सामना किए गए कई मामलों में काम नहीं करता है। लेकिन, आज सुबह मैंने जो हल निकाला, उस पर ध्यान दें।
रिचर्ड टी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.