1

我正在开发一个 Eclipse 插件,我想从用户那里获取输入。我在处理控制台之前遇到了问题,因为我在原始 Eclipse 应用程序中有 2 个控制台 1,另一个在新打开的 Eclipse 插件窗口中。我使用如下所示的方法在 Plugin 的 Console 中打印

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

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

注意正常的方法,如

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


    System.out.println(s);

正在为原始 Eclipse 而不是插件工作

4

1 回答 1

0

您不能捆绑等待用户输入的 UI,因此您必须在收到用户输入时处理它。一种方法是使用文档侦听器。这是一个打印最后一行输入的示例:

        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                    
            }
        });
于 2013-06-11T19:44:33.063 回答