|
|
|
интерактивная консоль
|
|||
|---|---|---|---|
|
#18+
Хочется сделать интерактивную консоль, то есть чтобы юзер смог читать и писать в одну и ту же якобы командную строку. Если контролировать вывод в консоль с помощью очереди, чтобы ничего не путалось (например в многопоточном приложении), то как быть с вводом в консоль? Как сделать так, чтобы пока я не писал в консоль, туда не вывалились сообщения от приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2012, 20:05:43 |
|
||
|
интерактивная консоль
|
|||
|---|---|---|---|
|
#18+
Какая-то жутко общая постановка. Консоль текстовая или гуёвая? У вас вопрос чисто логическией, как не читать консоль, пока кто-то что-то выводит? Так это надо смотреть на ваше окружение. Можно как в командной строке - запустил задачу (процесс) и больше ничего вводить нельзя, пока та не завершится. А если у вас требование параллельно вводить что-то, то надо уже с требованиями разбиратся. Может две разных консоли тогда завести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2012, 20:12:14 |
|
||
|
интерактивная консоль
|
|||
|---|---|---|---|
|
#18+
Консоль текстовая, никакого блокирования до окончания процесса не подразумевается. Кстати, очень похоже на чат, только в нем два окна, для ввода сообщения и для отображения истории. Мне нужно чтобы пока я туда что-то писал, в него не валились сообщения скажем других пользователей - типа занято, сохранись в очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2012, 20:21:21 |
|
||
|
интерактивная консоль
|
|||
|---|---|---|---|
|
#18+
hadarcenКонсоль текстовая, никакого блокирования до окончания процесса не подразумевается. Кстати, очень похоже на чат, только в нем два окна, для ввода сообщения и для отображения истории. Мне нужно чтобы пока я туда что-то писал, в него не валились сообщения скажем других пользователей - типа занято, сохранись в очереди. Чисто логически, а как различить моменты когда юзер в консоль "не пишет" и когда юзер пишет, но ищет нужную кнопку на клавиатуре? Если вы это можете определить, то в чем проблема? Буферизируйте весь вывод до определенного момента и когда он наступит вываливайте в консоль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2012, 20:28:51 |
|
||
|
интерактивная консоль
|
|||
|---|---|---|---|
|
#18+
Тогда задача сводится к следующей. Нужно узнать, когда юзер нажал одну кнопку, и ждать пока он не завершит ввод своего сообщения. Проблема в том, что этого сделать, насколько я понимаю, не удастся, потому что http://stackoverflow.com/questions/1066318/how-to-read-a-single-char-from-the-console-in-java-as-the-user-types-it . Поэтому можно ввести какую нибудь комбинацию клавиш - блокируем все, ждем окончания ввода от юзера. Одна голова хорошо, а две лучше :). Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2012, 20:46:25 |
|
||
|
интерактивная консоль
|
|||
|---|---|---|---|
|
#18+
по твоей ссылке про работу со стандартными потоками ввода-вывода (то что ты называешь "консоль"). Тебе же надо создать обычное окно JFrame и перехватывать все события клавиатуры. Это несложно. Можно сделать чтоб выглядело как виндовая консоль т.е. как чёрное досовое окошко где можно слать команды для cmd.exe. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2012, 23:02:27 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2130383]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 378ms |

| 0 / 0 |
