有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java插件中从控制台获取输入

我正在开发一个Eclipse插件,我想从用户那里获取信息。在处理控制台之前,我遇到了一个问题,因为我有两个控制台,一个在最初的Eclipse应用程序中,另一个在新打开的Eclipse插件窗口中。我使用下面所示的方法在插件的控制台中打印

public static void writeToConsole(String output) {

        MessageConsole console = new MessageConsole("My Console", null);
        console.activate();
        ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[]{ console });
        MessageConsoleStream stream = console.newMessageStream();
        stream.println(output);
    }

我只是不知道如何在控制台中写入,以及如何获取在变量中写入的内容

N.B。 常规方法如

BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
        String s = bufferRead.readLine();


    System.out.println(s);

正在为最初的Eclipse而不是插件工作


共 (1) 个答案

  1. # 1 楼答案

    你不能让用户界面等待用户输入,所以你必须在收到用户输入时处理它。一种方法是使用文档侦听器。下面是打印最后一行的示例:

            console.getDocument().addDocumentListener(new IDocumentListener() {
                @Override
                public void documentChanged(final DocumentEvent event) {
                    if ("\r\n".equals(event.getText())) {
                        final IDocument doc = event.getDocument();
                        try {
                            final IRegion region = doc.getLineInformationOfOffset(event.getOffset());
                            try {
                                final String line = doc.get(region.getOffset(), region.getLength());
                                System.out.println(line);
                            } catch (BadLocationException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        } catch (BadLocationException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
                @Override
                public void documentAboutToBeChanged(final DocumentEvent event) {
                    // TODO Auto-generated method stub                    
                }
            });