2012-05-06 4 views
1

Я показываю RSS-канал в моей JTextPanel. Отображаемый результат не переходит к новой строке. Как вставить \ n в JTextPane? Благодаря!JTextPane не переходит к новой строке?

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 View

Console View: Console View

+0

Side-Note: Лучше не использовать '\ n' для символа новой строки в [Java передовой практики] (http://www.javapractices.com/topic/TopicAction.do?Id=38). – kentcdodds

+0

В качестве части этого комментария я должен просто сказать, что лучшей альтернативой должно быть что-то вроде этого: 'public static String newline = System.getProperty (« line.separator »);' и везде, где требуется новая линия, вы можете просто добавьте переменную 'newline'. Удачи! – kentcdodds

+0

@kentcdodds спасибо за отзыв! –

ответ

2

Вот возможный обходной путь,

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); 
    } 
} 
+0

Спасибо sanjay!
- это то, что мне нужно! –

2
result += "Title: " + getElementValue(element,"title");    
result += "Link: " + getElementValue(element,"link"); 
result += "Publish Date: " + getElementValue(element,"pubDate"); 
result += "Description: " + getElementValue(element,"description"); 

При создании String вы никогда не пользуетесь новыми линиями. Либо добавьте новую строку в начало каждой строки (кроме первой строки), либо добавьте новую строку в конец каждой строки (кроме последней строки).

+0

Я внес изменения. Только когда я отключу setContentType («text/html»), \ n работает. Мне нужно отображать ссылки, поэтому мне нужно это сохранить. Это все еще не идет на следующую строку. –

+1

@LilyT Поскольку вы используете HTML, почему бы не использовать '
'? – Jeffrey

+0

Спасибо, Джеффри! Это решило! –

-1

Друзья .. Путь выше 2 ответов работают логически правильно, но мы должны принять помощь от встроенных классов и функций, которые Java предоставляет.

Вы также можете приобрести следующим образом, если вы хотите добавить другие функции, аналогичные опрашиваемого на

см http://docs.oracle.com/javase/7/docs/api/javax/swing/text/DefaultEditorKit.html

+1

Прокомментируйте сами ответы, чтобы добавить дополнительную информацию. Кроме того, вы не можете ссылаться на «выше ответы», поскольку порядок появления ответов может отличаться от разных пользователей. –

Смежные вопросы