java - 获取每个JTextArea的文本

标签 java swing jtextarea

我有这样的代码:

public main() {
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(700, 500);

    //tabbed pane
    add(tb);
}

public JTextArea txtArea() {
    JTextArea area = new JTextArea();
    String st = String.valueOf(tab);
    area.setName(st);

    return area;
}

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

@Override
public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();

    if(source==mnew) {
        tab++;

        tb.add("Untitled-"+tab,new JPanel().add(txtArea()));

        int s = tb.getSelectedIndex();
        s = tb.getTabCount()-1;
        tb.setSelectedIndex(s);
    }

    if(source==save) {
        int s = tb.getSelectedIndex()+1;
    }

每次单击“新建”菜单项,代码都会创建带有新面板和文本区域的新选项卡(它类似于许多文本编辑器,如 Notepad++ )。 单击菜单栏中的“保存”后,我想从聚焦的 jtextarea 中获取文本。 请帮忙。

最佳答案

向文本区域添加文档监听器。

public JTextArea txtArea() {
    JTextArea area = new JTextArea();
    tstDocumentListener dcL = new tstDocumentListener();
    area.getDocument().addDocumentListener(dcL);
    String st = String.valueOf(tab);
    area.setName(st);

    return area;
}

tstDocumentListener

public class tstDocumentListener implements DocumentListener
{
    public void changedUpdate(DocumentEvent e) {}       
    public void removeUpdate(DocumentEvent e)
    {
        String newString = "";
        int lengthMe = e.getDocument().getLength();
        try
        {
            newString = e.getDocument().getText(0,lengthMe);

            System.out.println(newString);
        }

        catch(Exception exp)
        {
            System.out.println("Error");
        }
    }
    public void insertUpdate(DocumentEvent e) 
    {
        String newString = "";
        int lengthMe = e.getDocument().getLength();
        try
        {
            newString = e.getDocument().getText(0,lengthMe);

            System.out.println(newString);
        }

        catch(Exception exp)
        {
            System.out.println("Error");
        }
    }
}

编辑

当您获得或失去对文本区域的焦点时获取文本

public JTextArea txtArea() {
    JTextArea area = new JTextArea();
    CustomFocusListener cFL = new CustomFocusListener();
    area.addFocusListener(cFL);
    String st = String.valueOf(tab);
    area.setName(st);

     return area;
}

自定义焦点监听器

public class CustomFocusListener implements FocusListener
{
    @Override
    public void focusGained(FocusEvent e)
    {
        String parseMe = "";
        JTextArea src;
        try 
        {
            src = (JTextArea)e.getSource();
            parseMe = src.getText();
            System.out.println(parseMe);
        }
        catch (ClassCastException ignored)
        {

        }
    }

    @Override
    public void focusLost(FocusEvent e)
    {
        String parseMe = "";
        JTextArea src;
        try 
        {
            src = (JTextArea)e.getSource();
            parseMe = src.getText();
            System.out.println(parseMe);
        }
        catch (ClassCastException ignored)
        {

        }
    }
}

关于java - 获取每个JTextArea的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239694/

相关文章:

java - JAXB - 属性 "Value"已定义。使用 <jaxb :property> to resolve this conflict

java - JScrollPane 中的透明 JList 都在一个类中

java - 从 JTextArea 获取一个键

java - 我如何在我的 JTextArea 中设置行号?

java - 从文本文件的一行中删除单词

java - 尝试执行 mvn clean install -DskipTests=true 时出现错误

java - 转换为 JScrollPane 中 JTable 的图像

java - 在不使用 GUI 生成器的情况下,如何像这样定位 JTextFields 和 JTextArea?

java - 如何从 RSA Privatekey.pem 文件中获取 java.security.PrivateKey 对象?

java - Jlist 中 JList 的输入事件处理问题