2012-05-05 27 views
5

नहीं भेजता है, मुझे लिंक प्रदर्शित करने की आवश्यकता है ताकि मैं setContentType के साथ JTextPane का उपयोग कर रहा हूं। हालांकि, सामग्री लपेटती नहीं है और कोई स्क्रॉल नहीं है। जेटीक्स्टपेन की सामग्री आरएसएस फ़ीड से वापस कर दी जाएगी। यहाँ पूर्ण कोड है:JTextPane JScrollPane प्रदर्शित नहीं करता है और टेक्स्ट

import java.awt.*; 
import javax.swing.*; 

class Main extends JFrame 
{ 
    JFrame frame; 
    JTabbedPane tabbedPane; 
    JPanel home, news;  

    public Main() 
    { 
     setTitle("My Title"); 
     setSize(900, 600); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     home(); 
     news(); 

     tabbedPane = new JTabbedPane(); 
     tabbedPane.addTab(" Home", home); 
     tabbedPane.addTab("News", news); 

     JPanel framePanel = new JPanel(); 
     framePanel.setLayout(new BorderLayout());  
     framePanel.add(tabbedPane, BorderLayout.CENTER); 
     getContentPane().add(framePanel);  

    } 


    public void home() 
    {  
     home = new JPanel(); 
     // some stuffs here 
    } 


    public void news() 
    { 
     news = new JPanel(); 

     JTextPane newsTextPane = new JTextPane(); 
     newsTextPane.setContentType("text/html"); 
     newsTextPane.setEditable(false); 

     JScrollPane scrollPane = new JScrollPane(newsTextPane);  
     scrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
     news.add(scrollPane); 

     RSS reader = RSS .getInstance(); 
     reader.writeNews();    

     String rssNews = reader.writeNews(); 
     newsTextPane.setText(rssNews); 
    } 

    public static void main(String args[]) 
    { 

     RSS reader = RSS.getInstance(); 
     reader.writeNews(); 

     Main mainFrame = new Main(); 
     mainFrame.setVisible(true); 
     mainFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     } 
} 

मेरे परिणाम: Screenshot

उत्तर

6

मैं सिर्फ अपने कोड का इस्तेमाल किया और यह किसी भी समस्याओं का कारण नहीं है:

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTextPane; 
import javax.swing.SwingUtilities 

public class TestScrolling { 

    public static void main(String[] args) { 
      SwingUtilities.invokeLater(new Runnable() { 
       public void run() { 
        initUI(); 
       }); 
    } 

    public static void initUI() { 
     StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < 100; i++) { 
      sb.append("loads loads loads loads of text here "); 
     } 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JTextPane newsTextPane = new JTextPane(); 
     newsTextPane.setContentType("text/html"); 
     newsTextPane.setEditable(false); 
     newsTextPane.setText(sb.toString()); 

     JScrollPane scrollPane = new JScrollPane(newsTextPane); 
     scrollPane.setVerticalScrollBarPolicy(
        javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); 
     frame.add(scrollPane); 
     frame.setSize(300, 200); 
     frame.setVisible(true); 
    } 
} 

संपादित करें:


आपको scrollPane की चौड़ाई किसी भी तरह मजबूर करना होगा। मेरे उदाहरण में यह फ्रेम के सामग्री फलक में स्क्रोलपैन जोड़कर पूरी तरह से किया जाता है, जो डिफ़ॉल्ट रूप से सीमा सीमा का उपयोग करता है। आपके मामले में, आपने फ़्लोलाउट का उपयोग किया जो स्क्रॉलपैन के पसंदीदा आकार को आवंटित करता है जो JTextPane के पसंदीदा आकार के बारे में है।

+0

+1 [एसएससीईएस] के लिए +1 (http://sscce.org/); मैं सवाल का अनुमान लगा रहा हूं (अनदेखा) [मार्कअप] (http://stackoverflow.com/q/2645834/230513) और [कंटेनर] (http://stackoverflow.com/q/4702891/230513) भी हो सकता है एक कारक। उदाहरण के लिए – trashgod

+0

@ गुइलाउम पोलेट +1, मैंने यह दिखाने के लिए इसका इस्तेमाल किया कि गलत कंटेनर आकार के साथ स्क्रॉलबार दिखाई नहीं देगा। ओपी 'पैनल' का उपयोग कर रहा है लेकिन हम इसके बारे में पर्याप्त नहीं जानते हैं। –

+0

@trashgod, मैंने पूरा कोड शामिल किया है, कृपया सलाह दें! धन्यवाद! –

0

क्या आप अपने JScrollPane के आस-पास एक पैनल या कुछ उपयोग कर रहे हैं?

innapropriate आकार के साथ @Guillaume Polet की SSCC ले रहा है उदाहरण के काम नहीं करेगा:

import java.awt.Dimension; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextPane; 

public class TestScrolling { 

    public static void main(String[] args) { 
     StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < 100; i++) { 
      sb.append("loads loads loads loads of text here "); 

     } 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JTextPane newsTextPane = new JTextPane(); 
     newsTextPane.setContentType("text/html"); 
     newsTextPane.setEditable(false); 
     newsTextPane.setText(sb.toString()); 
     JScrollPane scrollPane = new JScrollPane(newsTextPane); 
     scrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); 
     JPanel pan = new JPanel(); 
     pan.setMinimumSize(new Dimension(500,500)); 
     pan.add(scrollPane); 
     frame.add(pan); 
     frame.setSize(500, 500); 
     frame.setVisible(true); 
    } 
} 

मैं अपने panel करने के लिए अपने jScrollPane जोड़ने देखते हैं। क्या आप उस पैनल पर बनाए गए निर्माण/संशोधन प्रदान कर सकते हैं और जहां इस पैनल का उपयोग किया जाता है?

+0

मैंने पूरा कोड शामिल किया है, कृपया सलाह दें! –