शायद सबसे अच्छा तरीका है कि निहित घटक हमेशा व्यूपोर्ट के समान चौड़ाई हो। ऐसा करने के लिए पहला निहित घटक (वह बच्चा जो JViewPort
है, JScrollPane
कन्स्ट्रक्टर में पास किया गया है या viewportView
के रूप में सेट किया गया है) को javax.swing.Scrollable
लागू करने की आवश्यकता है। मुख्य विधि getScrollableTracksViewportWidth
है, जो true
वापस करनी चाहिए।
यहाँ एक त्वरित और गंदी स्क्रॉल JPanel है:
public class ScrollablePanel extends JPanel implements Scrollable {
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
return 10;
}
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
return ((orientation == SwingConstants.VERTICAL) ? visibleRect.height : visibleRect.width) - 10;
}
public boolean getScrollableTracksViewportWidth() {
return true;
}
public boolean getScrollableTracksViewportHeight() {
return false;
}
}
सवाल मेरे लिए काफी स्पष्ट नहीं है, लेकिन आप शायद jScrollPane के आकार में परिवर्तन की निगरानी और प्रतिक्रिया जब यह कुछ बाध्य की तुलना में कम (इसे सुचारू रूप से छिपाने हो जाता है हो सकता है)। –
ऐसा लगता है कि कुछ मूर्खतापूर्ण रिलायआउट सामान करना जब 'JViewport' परिवर्तनों का आकार इसे करने का एकमात्र तरीका है। (स्पष्टीकरण के लिए, मेरे पास मूल रूप से एक स्क्रॉलपैन के व्यूपोर्ट के अंदर एक टेबल है। मैं चाहता हूं कि स्क्रॉलपैन यह निर्धारित करे कि तालिका की कौन सी पंक्तियां दिखायी गई हैं, लेकिन मैं नहीं चाहता कि यह कॉलम दिखाए जाने वाले प्रभावों को प्रभावित करे। मैं क्या करना चाहता हूं विभिन्न स्तंभों के लिए एक संकीर्ण प्राथमिकता असाइन करना है ताकि टेक्स्टबॉक्स के क्षैतिज आकार को कम करने से विशिष्ट कॉलम को छोटा कर दिया जा सके।) – Mike