Как слушать JTextArea

Я создаю персональный Java-терминал, и мне нужно, чтобы он делал пару вещей, которые я сейчас не совсем понимаю. Мне нужна программа для прослушивания того, что вводится в JTextArea, а также зная, что программа всегда будет отображать

[USERNAME]@[OPERATING SYSTEM]:~$

при нажатии «Enter». И мне также нужна программа, чтобы установить часть, как сказано выше, нередактируемую и разрешить ввод символов после постоянного объявления. Если кто сможет мне с этим помочь, моя программа ниже, то есть код для слушателя, который скорее всего будет нуждаться в большой правке.

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

import java.io.*;

public class testGUI extends JFrame {
      boolean _active = true;
     String _username = System.getProperty("user.name").toLowerCase();
     String _os = System.getProperty("os.name").trim().toLowerCase();
     JTextArea _commandLine = new JTextArea(_username + "@" + _os + ":~$ ");

    public testGUI() {
        super("Java Terminal");

        setSize(800,600);
        setLocation(100,100);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        GUISetup();

        setVisible(true);
    }

    public void GUISetup() {
        add(_commandLine);
        _commandLine.addActionListener(new CommandLineListener());
    }


        public static void main(String[] args) {
        new testGUI();
    }
}   

Код слушателя ниже.

        try {
        while(_active) {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.print(_username + "@" + _os + ":~$ ");
            String command = br.readLine();
                if(command.equals("cf")) {
                    new commandCreateFile();
                } else if(command.equals("cof")) {
                    new commandCompile();
                } else if(command.equals("help")) {
                    System.out.println("Commands");
                    System.out.println(" cf              - Creates .java files, does not compile.");
                    System.out.println(" ccf             - Creates .java files, compiles on creation.");
                    System.out.println(" help            - Shows help documentation.");
                } else if(command.equals("exit")) {
                    System.out.print("Are you sure you want to exit? (Y/N) ");
                    String exit = br.readLine();
                    if(exit.equalsIgnoreCase("y")) {
                    System.exit(0);
                    }
                } else if(command.isEmpty()) {
                    // do nothing.
                } else {
                    System.out.println("\"" + command + "\" does not exist. Please review the \"help\" menu");
                }
        }
    } catch(Exception ex) {
        System.out.println("There was a problem: " + ex);
    }

person Nathan Kreider    schedule 03.03.2012    source источник


Ответы (1)


Используйте DocumentListener, прикрепленный к JTextArea's, Document, и DocumentFilter, прикрепленный к Document, чтобы проверить, какое редактирование разрешено.

person StanislavL    schedule 03.03.2012
comment
Этого я не понимаю, используя документ JTextArea, нужно ли мне прикреплять к нему правильный документ? - person Nathan Kreider; 04.03.2012