简体   繁体   English

获取每个JTextArea的文本

[英]Get text of each JTextArea

I've code like this: 我的代码是这样的:

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;
    }

Every click on the "New" menu item, code creates new tab with new panel and textarea (it's similar to a lot of text editors like notepad++). 每次单击“新建”菜单项,代码都会创建带有新面板和文本区域的新标签页(类似于许多文本编辑器,如notepad ++)。 After clicked "Save" in menu bar I want to get text from focused jtextarea. 单击菜单栏中的“保存”后,我想从焦点突出的jtextarea中获取文本。 Please help. 请帮忙。

Add a document listener to the text area. 将文档侦听器添加到文本区域。

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 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");
        }
    }
}

Edit 编辑

As for getting the text when you gain or lose focus on the text area 至于在集中或失去对文本区域的关注时获取文本

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

     return area;
}

CustomFocusListener CustomFocusListener

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)
        {

        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM