【问题标题】:Taking input from console in a plugin in java在java中的插件中从控制台获取输入
【发布时间】:2013-06-12 03:44:33
【问题描述】:

我正在开发一个 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 而不是插件工作

【问题讨论】:

    标签: java eclipse-plugin console


    【解决方案1】:

    您不能捆绑等待用户输入的 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                    
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多