2011-04-18 86 views
1

我正在使用Java Swing,并且已将JTextArea放入JScrollBar中。我想要的是滚动条来跟踪数据。 举个例子,我想在JTextArea中写一个for(;;)的输出,所以我可以看到最新的(最新的)值。 我该怎么做?如何使JTextArea移动滚动条

编辑:我已编辑的问题更具体。

+0

“我有一个滚动文本区域” 难道你的意思是** JScrollPane **中的'JTextArea'?请尽可能清楚准确地保存这些阅读材料,以便猜出您的意思。 – 2011-04-18 10:02:57

+0

滚动条跟随数据..你是什么意思?你能否详细说明一下? – harishtps 2011-04-18 10:18:32

+0

@Andrew Thompson @harishtps我编辑了这个问题。正如我上面所说,我想看到最新的值,而不是停下来,我不得不向下滚动才能看到数据。 – Stelios 2011-04-18 13:35:46

回答

1
+0

谢谢。从你的文章看来,我的例子似乎只能工作(假设它可以工作)'不小心'! – 2011-04-18 15:56:12

1

如果您在JScrollPane中使用的JTextArea然后下面应该工作:

JTextArea area = new JTextArea(); 
area.setWrapStyleWord(true); 
area.setLineWrap(true); 
JScrollPane pane = new JScrollPane(area); 
2
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class AutoScrollTextArea { 

    static String text = "Lorem ipsum dolor sit amet, " 
     +"consectetur adipiscing elit. " 
     +"Integer vestibulum metus id elit malesuada mattis. " 
     +"Aliquam non rutrum justo. Morbi eleifend nisi ut " 
     +"turpis commodo nec ultricies arcu vehicula. " 
     +"Donec varius neque at nunc pellentesque tincidunt. " 
     +"Phasellus sed ante ut tortor fermentum posuere sed " 
     +"sit amet tortor. Sed cursus magna a lacus mattis eleifend. " 
     +"Aliquam congue faucibus purus vel commodo. " 
     +"Fusce rutrum consectetur nibh nec facilisis. "; 

    public static void main(String[] args) { 

     Runnable r = new Runnable() { 
      public void run() { 
       JPanel gui = new JPanel(new BorderLayout(5,5)); 
       final JTextArea textArea = new JTextArea(10,60); 
       textArea.setWrapStyleWord(true); 
       textArea.setLineWrap(true); 
       textArea.setEnabled(false); 
       gui.add(new JScrollPane(textArea), BorderLayout.CENTER); 

       JButton button = new JButton("Add Text"); 
       button.addActionListener(new ActionListener(){ 
        public void actionPerformed(ActionEvent ae) { 
         textArea.append(text); 
         textArea.append(System.getProperty("line.separator")); 
         textArea.append(System.getProperty("line.separator")); 
        } 
       }); 
       gui.add(button, BorderLayout.SOUTH); 

       JOptionPane.showMessageDialog(null, gui); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 

(它会自动发生;)