2009-09-06 20 views
12

जेपीनल स्क्रॉल करने योग्य कैसे बनाएं? मैं अभी तक जब साथस्क्रॉल करने योग्य जेपीनेल

tabbedPane.add("Editor", new JScrollPane(storeyEditor = new MNScrollablePanel())); 

कुछ भी नहीं युक्त पैनल में जोड़ने से स्क्रॉल करने योग्य इंटरफ़ेस कार्यान्वित काम करता है

कोड:

public class MNScrollablePanel extends JPanel implements Scrollable { 

    public Dimension getPreferredScrollableViewportSize() { 
     return getPreferredSize(); 
    } 

    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { 
     return 10; 
    } 

    public boolean getScrollableTracksViewportHeight() { 
     return false; 
    } 

    public boolean getScrollableTracksViewportWidth() { 
     return false; 
    } 

    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { 
     return 10; 
    } 
} 

उत्तर

8

आप एक JScrollPane उपयोग करना होगा। और फिर setViewportview(Component) पर कॉल करें;

आप स्क्रॉल को लागू करने की जरूरत नहीं है, JPanel allready स्क्रॉल

+3

आप किसी JSCrollPane में कोई भी घटक जोड़ सकते हैं, चाहे वह स्क्रॉल करने योग्य हो या नहीं, लेकिन स्क्रॉल करने योग्य लागू करने से आपको अधिक नियंत्रण मिलेगा। जेपीनल स्क्रॉल करने योग्य नहीं है, इसलिए यदि आप पैनल को प्रदर्शित करते समय स्क्रॉल फलक कैसे व्यवहार करते हैं, तो आपको अधिक नियंत्रण चाहिए यदि आपको अधिक नियंत्रण करना है। –

+0

(या आप कुछ भी लागू किए बिना 'JScrollPane'/'JScrollBar के गुणों को सेट कर सकते हैं।) –

+0

@Dan: हाँ, लेकिन मैंने कभी नहीं कहा' उपकरण ' –

1

सभी अन्य पोस्टिंग में उल्लेख किया है वहाँ लागू करने के लिए स्क्रॉल खुद के इंटरफेस का कोई कारण नहीं है। हालांकि, अगर आप बस खेल रहे हैं, तो पोस्ट किया गया मूल कोड उचित दिखता है। हालांकि आपने अपना डेमो प्रोग्राम पोस्ट नहीं किया है यह दिखाता है कि आप इस कोड का उपयोग कैसे करते हैं। भविष्य में, अपने प्रश्न के साथ एक एसएससीसीई पोस्ट करें। यदि आपको नहीं पता कि एसएससीसीई क्या है तो वेब पर खोजें।

एक बार संभावित समस्या यह है कि स्क्रॉलबार के व्यूपोर्ट में जोड़े गए घटक का "पसंदीदा आकार" स्क्रॉलपैन के आकार से अधिक होता है जब स्क्रॉलबार स्वचालित रूप से दिखाई देते हैं।

तो यदि आप पैनल पर कस्टम पेंटिंग कर रहे हैं, तो आप पैनल के पसंदीदा आकार को बदलने के लिए जिम्मेदार हैं क्योंकि यह बदलता है। यदि आप घटक और लेआउट मैनेजर के साथ पैनल का उपयोग कर रहे हैं तो आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। लेकिन यदि आप एक नल लेआउट प्रबंधक के साथ घटकों का उपयोग कर रहे हैं तो आपको भी समस्याएं होंगी।

यही कारण है कि हमें एक एसएससीसीई की आवश्यकता है क्योंकि हम इस बात का संदर्भ नहीं जानते कि आप पैनल का उपयोग कैसे कर रहे हैं।

0

मेरे पास आपके लिए एक नया समाधान है।

मुझे लगता है कि आप इस कोड का उपयोग करने के लिए है:

storyEditor = new JPanel(); 
storyEditor.setPreferredSize(new Dimension(..., ...)); // Insert Here your size for the editor 
JScrollPane scroller = new JScrollPane(storyEditor); 
tabbedPane.add("Editor", scroller)); 
frame.setSize(frame.getWidth()+1, frame.getHeight()); // frame is the JFrame where the tabbed pane is into 
// Maybe you can replace "frame" with "this" 
// You need to resize your frame. Why, I don't know... 
frame.pack(); 
// Your original size will be restored by calling pack 

यह मेरे लिए एक समाधान था। मुझे आशा है कि आप के लिए!

22

यह इस तरह मेरे साथ काम किया ....

JPanel test = new JPanel(); 
test.setPreferredSize(new Dimension(2000,2000)); 
JScrollPane scrollFrame = new JScrollPane(test); 
test.setAutoscrolls(true); 
scrollFrame.setPreferredSize(new Dimension(800,300)); 
this.add(scrollFrame); 
+0

ध्यान दें कि स्क्रॉल वृद्धि पर आपके पास नियंत्रण नहीं है, यानी स्क्रॉल बटन पर प्रत्येक क्लिक या प्रत्येक माउस व्हील बारी बारी से एक पिक्सेल स्क्रॉल करने के परिणामस्वरूप आपको जिस पर आपला करना होगा - यदि आप चाहते हैं - 'स्क्रॉल करने योग्य' को लागू करके। –

1

JPanel स्क्रॉल को लागू करता है नहीं करता है। SwingX से JXPanel का उपयोग करना बेहतर है, जो स्क्रॉल करने योग्य लागू करता है और इसमें बहुत अधिक सुविधाएं हैं।

संबंधित मुद्दे