// копировать изображение в 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);
Если вы дадите переключателям то же имя, что и свойство в вашей модели, тогда 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);