Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Два вопроса по Swing'у / 8 сообщений из 8, страница 1 из 1
11.04.2007, 19:48:46
    #34454225
alx3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
Маленькая программка, окно с текстовым полем, по клику копирует в буфер обмена все содержимое.
Нарисовал JFrame, бросил на него JScrollPane, на него JTextArea.
Для JTextArea прописал MouseListener:
Код: plaintext
1.
2.
3.
4.
5.
 public   void  mouseClicked(MouseEvent e) {
	 int  pos = jTextArea.getCaretPosition();
	jTextArea.selectAll();
	jTextArea.copy();
	jTextArea.select(pos,pos);
}
Вешаю поверх всех окон. Работает.
Проблема в том, что если быстро кликнуть на JTextArea, а потом на другое приложение, то программка не успевает скопировать текст (2 строчки всего) и в буфер обмена ничего не попадает.
Вопрос 1: Подскажите (ткните носом в доку) как это поправить?
Всегда ест 18 мегов памяти, на Xms и Xmx не реагирует.
Вопрос 2: 18m - это минимум для Swing'а?
...
Рейтинг: 0 / 0
11.04.2007, 23:53:10
    #34454511
jusio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
Мда а я думал я всякое успел повидать... Вообщем используйте getText() и посмотрите примеры как вставлять вручную в буфер обмена информацию.
...
Рейтинг: 0 / 0
12.04.2007, 13:23:46
    #34455934
The_ShadoW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
18m - это минимум для Swing'а?

Минимум для Свинга (и остальной JVM) - около 9 мб. Разберитесь с Вашей программой, и выкиньте лишнее.
...
Рейтинг: 0 / 0
13.04.2007, 13:05:42
    #34459012
alx3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
jusio: Последовал вашему совету:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public   void  mouseClicked(MouseEvent e) {
         if  (jTextArea.getText().length() >  0 ) {
		Toolkit t;
		Clipboard cl;
		StringSelection ss =  new  StringSelection(jTextArea.getText());
		t = Toolkit.getDefaultToolkit();
		cl = t.getSystemClipboard();
		cl.setContents(ss, ss);
	}
}
Работает точно также, как и первый вариант. Но проблему это не решает.
Т.е. если быстро кликнуть на JTextArea, в котором всего одно слово, а потом а потом на другое приложение (Notepad), то в буфер ничего не скопируется.
Насколько я понимаю, когда окно теряет фокус, события в очереди перестают выполняться. Не подскажете, как с этим бороться?

The_ShadoW:
Вся программка в одном классе, на форме два компонета JScrollPane и JTextArea, больше ничего нет.
А у вас получалось запустить свинговое окошко, так, чтобы оно съедало не больше 9 мегабайт? Что в таком случае надо использовать, если Xms и Xmx не срабатывают?

PS: У меня WinXP, JDK 6.0.
...
Рейтинг: 0 / 0
23.04.2007, 19:59:05
    #34481726
alx3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
Решение проблемы оказалось простым:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public   void  mousePressed(MouseEvent e) {
	 if  (jTextArea.getText().length() >  0 ) {
		Toolkit t;
		Clipboard cl;
		StringSelection ss =  new  StringSelection(jTextArea.getText());
		t = Toolkit.getDefaultToolkit();
		cl = t.getSystemClipboard();
		cl.setContents(ss, ss);
	}
}
mouseClicked не отрабатывало если в момент отпускания кнопки мыши курсор был уже за пределами окна.
...
Рейтинг: 0 / 0
23.04.2007, 21:49:32
    #34481885
alx3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
В процессе возник еще один вопрос по Swing'у:
Использую metal LaF. В метод main добавляю строчку:
Код: plaintext
JFrame.setDefaultLookAndFeelDecorated(true);
Теперь у окошка красивая рамка.))
В WinXP выставлена опция "не отображать содержимое окна при перетаскивании" (или как то так). Если рамка у окна родная виндузовая, то содержимое окна не отображается. А если рамка свинговая, то эта опция не работает - при перетаскивании содержимое окна отображается, чего хотелось бы избежать. Подскажите, возможно ли это?
...
Рейтинг: 0 / 0
24.04.2007, 11:56:40
    #34482880
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
вероятно в коде нужно где-то прописывать поведение отдельно

Что-то вроде java.awt.Toolkit.setDynamicLayout
...
Рейтинг: 0 / 0
07.05.2007, 22:21:37
    #34511089
alx3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два вопроса по Swing'у
1024:
Неа, так не срабатывает. Это параметр для LayoutManager'ов.
Скорее всего такая опция еще не реализована.

Возник еще один вопрос:
я в JDK 6 в конструкторе формочки (наследника JFrame) пишу:
Код: plaintext
1.
 this .pack();
 this .setMinimumSize( this .getSize());
И мое окошко юзер не сможет сделать меньше указанного.
А в JDK 5 насколько я понял такое невозможно реализовать в принципе?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Два вопроса по Swing'у / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]