Самый эффективный способ создания InputStream из OutputStream

// копировать изображение в ClipBoard Использование Java Robot

 Runtime.getRuntime().exec("mspaint.exe");
Thread.sleep(5000);
StringSelection x=new StringSelection("Location of Photo with format");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(x,null);
Robot r=new Robot();
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_O);
r.keyRelease(KeyEvent.VK_O);
r.keyRelease(KeyEvent.VK_CONTROL);
Thread.sleep(4000);
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_CONTROL);
Thread.sleep(1000);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(5000);
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_A);
r.keyRelease(KeyEvent.VK_A);
r.keyRelease(KeyEvent.VK_CONTROL);
Thread.sleep(5000);
r.keyPress(KeyEvent.VK_CONTEXT_MENU);
r.keyRelease(KeyEvent.VK_CONTEXT_MENU);
Thread.sleep(1000);
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
Thread.sleep(2000);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(2000);
r.keyPress(KeyEvent.VK_ALT);
r.keyPress(KeyEvent.VK_F4);
r.keyRelease(KeyEvent.VK_F4);
r.keyRelease(KeyEvent.VK_ALT);
80
задан Necreaux 27 May 2016 в 16:09
поделиться

1 ответ

Если вы дадите переключателям то же имя, что и свойство в вашей модели, тогда MVC автоматически установит отмеченный атрибут на подходящую кнопку.

Я думаю, это зависит от наличия строго типизированной модели.

Если вы хотите скопировать все данные в буфер в памяти сразу, тогда вам понадобится ваш код, который использует OutputStream (производитель), и код, который использует InputStream (потребитель), либо чередуется в один и тот же поток или работать одновременно в двух отдельных потоках. Их работа в одном потоке, вероятно, намного сложнее, чем использование двух отдельных потоков, гораздо более подвержено ошибкам (вам нужно убедиться, что потребитель never блокирует ожидание ввода, иначе вы эффективная взаимоблокировка) и потребует, чтобы производитель и потребитель работали в одном и том же цикле, что кажется слишком тесно связанным.

Поэтому используйте второй поток. Это действительно не так уж сложно. Страница, на которую вы ссылаетесь, была прекрасным примером:

  PipedInputStream in = new PipedInputStream();
  PipedOutputStream out = new PipedOutputStream(in);
  new Thread(
    new Runnable(){
      public void run(){
        class1.putDataOnOutputStream(out);
      }
    }
  ).start();
  class2.processDataFromInputStream(in);
68
ответ дан 24 November 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: