Как слушать JTextArea - PullRequest
       14

Как слушать JTextArea

2 голосов
/ 03 марта 2012

Я создаю персональный 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);
    }

1 Ответ

3 голосов
/ 03 марта 2012

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

...