2

JTextPanel に RSS フィードを表示しています。表示される結果は改行されません。JTextPane に '\n' を挿入するにはどうすればよいですか? ありがとう!

writeNews クラス:

 public String writeNews() 
        {
            String result = "";
            
            try 
        {               
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            URL u = new URL("http://thestar.com.my.feedsportal.com/c/33048/f/534600/index.rss"); 

            Document doc = builder.parse(u.openStream());
            NodeList nodes = doc.getElementsByTagName("item");
                    
            for(int i=0;i<nodes.getLength();i++) 
            {                
                Element element = (Element)nodes.item(i);           
                
                result += "\nTitle: " + getElementValue(element,"title");               
                result += "\nLink: " + getElementValue(element,"link");
                result += "\nPublish Date: " + getElementValue(element,"pubDate");
                result += "\nDescription: " + getElementValue(element,"description");

                System.out.println("Title: " + getElementValue(element,"title"));
                System.out.println("Link: " + getElementValue(element,"link"));
                System.out.println("Publish Date: " + getElementValue(element,"pubDate"));
                System.out.println("Description: " + getElementValue(element,"description"));
                System.out.println();
                
            }
        }

        catch(Exception ex) 
        {
            ex.printStackTrace();
        }
        
        return result;
    }

結果は単純な JTextPane に表示されます。

public void news()
    {
        news = new JPanel(new GridLayout());
        news.setBackground(SystemColor.inactiveCaptionBorder);
        
        JTextPane newsTextPane = new JTextPane(); 
        newsTextPane.setContentType("text/html");
        newsTextPane.setEditable(false); 

        JScrollPane scrollPane = new JScrollPane(newsTextPane);     
        news.add(scrollPane);   
        
        TextSamplerDemo reader = TextSamplerDemo.getInstance();
        reader.writeNews();             
        
        String rssNews = reader.writeNews();
        newsTextPane.setText(rssNews);
    
    }

JTextPane ビュー: JTextPane ビュー

コンソール ビュー: コンソール ビュー

4

3 に答える 3

3

考えられる回避策は次のとおりです。

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

public class TestLineBreak {

    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 10; i++) {
            sb.append("Text goes here <br>"); //<br> tag to insert line breaks
        }
        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);
        frame.add(scrollPane);
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
} 
于 2012-05-06T02:47:06.230 に答える
2
result += "Title: " + getElementValue(element,"title");             
result += "Link: " + getElementValue(element,"link");
result += "Publish Date: " + getElementValue(element,"pubDate");
result += "Description: " + getElementValue(element,"description");

を作成するときはString、新しい行を使用することはありません。すべての行の先頭(最初の行を除く)に改行を追加するか、すべての行の末尾(最後の行を除く)に改行を追加します。

于 2012-05-06T02:28:52.733 に答える
-1

仲間..上記の2つの回答が機能する方法は論理的に正しいですが、Javaが提供する組み込みクラスと機能の助けを借りる必要があります。

質問されたものと同様の他の機能を追加する場合は、次の方法で入手することもできます

http://docs.oracle.com/javase/7/docs/api/javax/swing/text/DefaultEditorKit.htmlを参照してください。

于 2013-06-04T13:05:52.543 に答える