Java JFrame сохраняет фокус, когда он виден

Я не уверен, правильно ли я установил заголовок для этого поста - так что, возможно, уже есть пост для того, что я ищу, если это так, не стесняйтесь закрыть его и перенаправить меня - что я пытаюсь сделать это:

Когда появляется JFrame, пользователь не может щелкнуть где-либо еще в графическом интерфейсе, если это окно не закрыто, надеюсь, даже выдаст это раздражающее звуковое сообщение об ошибке «DING», очень похожее на netbeans, когда открыто окно «Настроить код», и оно не позволяя вам делать что-либо вне его, пока он не закрыт.

Заранее спасибо!


person kxk    schedule 28.06.2010    source источник


Ответы (2)


JFrame не следует извлекать, если вы не хотите, чтобы два автономных (верхнего уровня) приложения работали одновременно, поэтому JFrames НЕ могут быть модальными. То, что вам, вероятно, нужно, это JDialog, установленное в модальное (даже будет издавать этот раздражающий звук).

person cypher    schedule 28.06.2010
comment
Я не совсем уверен, что понимаю вашу точку зрения. Я вставляю JFrame, чтобы добавить много входных данных от пользователя, что невозможно сделать с помощью JDialog. Итак, вы говорите мне, что я не могу заставить JFrame иметь этот атрибут? Это 100%? - person kxk; 28.06.2010
comment
Почему именно это нельзя было сделать с JDialog, который сделан для ДИАЛОГОВ с пользователем? JFrames используются в качестве контейнеров для приложений верхнего уровня. Это означает, что они не должны иметь какого-либо родителя и, следовательно, не могут быть сделаны модальными (вот почему у них нет модального атрибута. Я не говорю, что я уверен, что это невозможно сделать во всяком случае, я просто говорю, что это не должно. - person cypher; 28.06.2010
comment
Что ж, JDialog слишком мал и не настраивается в той мере, в какой мне это нужно, поэтому я пробую его с JFrame. Хотя я понимаю вашу точку зрения. Думаю, я подожду, чтобы услышать еще несколько мнений. Спасибо - person kxk; 28.06.2010
comment
JDialog дает вам такую ​​же гибкость, как и JFrame: вы можете сделать окно настолько большим/маленьким, насколько это необходимо, и делать почти все, что вы обычно делаете в JFrame. Единственная реальная разница между ними заключается в том, что JDialog поддерживает модальность. - person BCunningham; 28.06.2010
comment
О... Я этого не знал. Я мог бы также попробовать это тогда! Спасибо за информацию дружище! - person kxk; 28.06.2010

Создайте JFrame как отдельный поток, чтобы сосредоточиться на текущем окне.

person Prav    schedule 28.06.2010