2008-09-29 16 views
12

मैं javax.swing.JDesktopPane पर स्क्रॉलिंग क्षमता जोड़ना चाहता हूं। लेकिन javax.swing.JScrollPane में लपेटना वांछित व्यवहार का उत्पादन नहीं करता है।स्क्रॉल करने योग्य JDesktopPane?

Searching the web दिखाता है कि यह काफी समय से एक मुद्दा रहा है। वहां somesolutions हैं, लेकिन वे बहुत पुराने लगते हैं, और मैं उनसे पूरी तरह से संतुष्ट नहीं हूं।

सक्रिय रूप से बनाए रखा समाधान क्या आप जानते हैं?

उत्तर

6

मैं बनाने के द्वारा JavaWorld's solution का उपयोग किया है मेरे अपने JScrollableDesktopPane.

+0

यह वास्तव में मेरा वर्तमान समाधान भी है, लेकिन मैं इसके साथ रोमांचित नहीं हूं। मैंने अपनी खुद की परियोजना शुरू करने से पहले यहां पूछने का फैसला किया कि मुझे वह पसंद है जो मुझे पसंद है। –

1

मैंने पाया इस: http://www.javaworld.com/javaworld/jw-11-2001/jw-1130-jscroll.html?page=1

यह और स्विंग & इतने पर स्पष्टीकरण के बहुत सारे infos के साथ एक अच्छा ट्यूटोरियल है, जो एक JscrollableDesktopPane बनाने के लिए अनुमति देता है है बहुत सारे सामान के साथ।

आपको अपनी आवश्यकताओं को पूरा करने के लिए कोड के कुछ हिस्सों को संशोधित करने की आवश्यकता होगी।

आनंद लें!

+0

ओह, स्रोत के लिए सीधे लिंक भूलना: http://www.javaworld.com/javaworld/jw-11-2001/jscroll/jw-1130-jscroll.jar – Benj

1

जावावर्ल्ड का JScrollableDesktopPane अब उनकी वेबसाइट पर उपलब्ध नहीं है। मैंने इसकी कुछ प्रतियां साफ़ करने में कामयाब रहे लेकिन उनमें से कोई भी काम नहीं करता।

मैंने जो सरल समाधान प्राप्त किया है वह निम्नलिखित की तरह कुछ हासिल किया जा सकता है। यह सबसे सुंदर नहीं है लेकिन यह निश्चित रूप से डिफ़ॉल्ट व्यवहार से बेहतर काम करता है।

public class Window extends Frame { 
    JScrollPane scrollContainer = new JScrollPane(); 
    JDesktopPane mainWorkingPane = new JDesktopPane(); 

    public Window() { 
     scrollContainer.setViewportView(mainWorkingPane); 

     addComponentListener(new ComponentAdapter() { 
      public void componentResized(ComponentEvent evt) { 
       revalidateDesktopPane(); 
      } 
     }); 
    } 

    private void revalidateDesktopPane() { 
     Dimension dim = new Dimension(0,0); 
     Component[] com = mainWorkingPane.getComponents(); 
     for (int i=0 ; i<com.length ; i++) { 
      int w = (int) dim.getWidth()+com[i].getWidth(); 
      int h = (int) dim.getHeight()+com[i].getHeight(); 
      dim.setSize(new Dimension(w,h)); 
     } 
     mainWorkingPane.setPreferredSize(dim); 
     mainWorkingPane.revalidate(); 
     revalidate(); 
     repaint(); 
    } 
} 

विचार आकार (या नए तत्वों को जोड़ने) पर एक JScrollPane में JDesktopPane रैप करने के लिए, मुख्य फ्रेम पर एक आकार बदलने श्रोता जोड़ने और फिर मूल्यांकन JDesktopPane की सामग्री को किया जा रहा है।

आशा है कि इससे किसी को वहां मदद मिलेगी।

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