печать заводной консоли на панели редактора - PullRequest
0 голосов
/ 18 марта 2011

Мне нужно распечатать содержимое моей отличной консоли на панели редактора Swing Builder / textarea.Как мне это сделать?

Есть ли код / ​​класс многократного использования для достижения этой цели?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Ваше решение будет зависеть от того, как вы создаете экземпляр groovyConsole и как и почему вы хотите получить к нему доступ.

Когда вы говорите «содержимое», вы имеете в виду вывод запуска сценария из консоли или сценария, отображаемого в области редактора самой консоли?

Обратите внимание, что консоль groovy самаконструктор качелей создал набор текстовых полей и панелей редактора.См. Исходный код по адресу: http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/src/main/groovy/ui/Console.groovy

См. Основной метод для создания консоли.Если вы делаете это в своем собственном коде и сохраняете ссылку на консольный объект, вы сможете получить доступ к содержимому различных текстовых областей.

0 голосов
/ 31 марта 2011

Спасибо !! Подойдет простое перенаправление println на новый printstream. Вот код Этот класс создаст внутренний фрейм, в котором будет отображаться текстовая область, содержащая все операторы sysout и syserr.

public class ConsoleFrame extends JInternalFrame
{
  JTextArea outArea = new JTextArea(300,300);
  static JInternalFrame cons;
  public ConsoleFrame() 
  {
    JScrollPane pain = new JScrollPane(outArea);
    //pain.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    this.add(pain);
    this.setVisible(true);
    this.setSize(785,255); 
    this.setTitle("Groovy Console");
    this.closable = false;
    this.maximizable = false;
    this.isSelected = true;
    this.resizable = false;
    BasicInternalFrameUI ui = (BasicInternalFrameUI)this.getUI();
    Component north = ui.getNorthPane();
    MouseMotionListener[] actions =
    (MouseMotionListener[])north.getListeners(MouseMotionListener.class);

    for (int i = 0; i < actions.length; i++)
    north.removeMouseMotionListener( actions[i] );

    this.setFocusable(false);    
    System.setOut(new PrintStream(new JTextAreaOutputStream(outArea)));
    System.setErr(new PrintStream(new JTextAreaOutputStream(outArea)));
    setConsole(this);
  }


  static public JInternalFrame getConsole(){
      return cons;
  }
  public void setConsole(JInternalFrame console){
      cons = console;
  }
  public class JTextAreaOutputStream extends OutputStream {
    JTextArea ta;

    public JTextAreaOutputStream(JTextArea t) {
      super();
      ta = t;
    }

    public void write(int i) {
      ta.append(Character.toString((char)i));
    }

    public void write(char[] buf, int off, int len) {
      String s = new String(buf, off, len);
      ta.append(s);
    }

  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...