我正在开发一个Eclipse插件,我想从用户那里获取输入。我在处理控制台之前遇到了问题,因为我在原始Eclipse应用程序中有2个控制台1,而在新打开的Eclipse插件窗口中有另外2个控制台。我使用下面显示的方法在插件的控制台中打印
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而不是插件
答案 0 :(得分: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
}
});