2014-03-29 22 views
2

如何从JTextArea中逐一删除线条而不是所有线条?如何从JTextArea中逐一删除线条

我有一个JTextArea从线程获得字符串结果,现在我想在线程执行时一次删除一行。

+0

实现该发现的第一种方法“\ n”,从那个点清晰文本区休息,追加你刚刚得到的文本。 –

回答

2
  • 您首先需要决定什么应该触发行删除。
  • 是否应该增加一条新线,以便总线数不变。如果是这样,那么你应该写你的代码,以在添加新行的同一位置调用行删除代码。
  • 或者它应该是恒定的速度 - 如果是这样,那么你会想要使用一个摆动计时器。
  • 然后你需要决定删除哪一行。如果不是第一行,那么你需要弄清楚如何计算哪一行。 javax.swing.text.Utilities类可以帮助您找到JTextArea中每行文本的开始和结束位置。

编辑
你问:

主要关注的是如何从JTextArea中删除它,我已经计算出具有行的开始和结束位置被删除。但是什么功能可以帮助删除那一行?

  • 你会首先通过调用得到JTextArea中的文件,getDocument()
  • 然后,你可以对文件调用remove(int offs, int length)按照该Document API
+0

主要关心的是如何从JTextArea中删除它,我已经计算了一行必须删除的开始和结束位置。但是什么函数可以帮助删除这一行? – user3473791

+0

@ user3473791:请参阅编辑以回答。 –

+0

非常感谢,我可以看到它在试验中被删除。现在我会试着用计时器和适当的GUI。再次感谢。 – user3473791

0

试试这个:

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

class SwingControlDemo { 
String [] m; 
int i=0; 
String append=""; 
private JFrame mainFrame; 
private JLabel headerLabel; 
private JLabel statusLabel; 
private JPanel controlPanel; 
Timer t; 

public SwingControlDemo(){ 
    prepareGUI(); 
} 

public static void main(String[] args){ 
    SwingControlDemo swingControlDemo = new SwingControlDemo();  
    swingControlDemo.showTextAreaDemo(); 
} 

private void prepareGUI(){ 
    mainFrame = new JFrame("Java Swing Examples"); 
    mainFrame.setSize(400,400); 
    mainFrame.setLayout(new GridLayout(3, 1)); 
    mainFrame.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent windowEvent){ 
     System.exit(0); 
    }   
    });  
    headerLabel = new JLabel("", JLabel.CENTER);   
    statusLabel = new JLabel("",JLabel.CENTER);  

    statusLabel.setSize(350,100); 

    controlPanel = new JPanel(); 
    controlPanel.setLayout(new FlowLayout()); 

    mainFrame.add(headerLabel); 
    mainFrame.add(controlPanel); 
    mainFrame.add(statusLabel); 
    mainFrame.setVisible(true); 
} 

private void showTextAreaDemo(){ 
    headerLabel.setText("Control in action: JTextArea"); 

    JLabel commentlabel= new JLabel("Comments: ", JLabel.RIGHT); 

    final JTextArea commentTextArea = 
    new JTextArea("This is a Swing tutorial " 
    +"\n to make GUI application in Java."+"\n to make GUI application in Java"+"\n to make GUI application in Java",5,20); 

    JScrollPane scrollPane = new JScrollPane(commentTextArea);  

    JButton showButton = new JButton("Show"); 

    showButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) {  
    String s=commentTextArea.getText(); 
     m=s.split("\n"); 
     t.start(); 

    } 
    }); 

t=new Timer(1000,new ActionListener(){ 
    public void actionPerformed(ActionEvent e) 
    { 
    i++; 
    append=""; 
    if(i<=m.length) 
    { 
    for(int j=i;j<m.length;j++) 
    { 
     append=append+m[j]; 
    } 
    commentTextArea.setText(append); 

    } 

    else 
    { 
    t.stop(); 
    } 
     }}); 
    controlPanel.add(commentlabel); 
    controlPanel.add(scrollPane);   
    controlPanel.add(showButton); 
    mainFrame.setVisible(true); 
    } 
}