2015-01-15 2 views
0

Я написал приложение плоттера данных некоторое время назад, которое имеет функцию автозагрузки. Действие загрузки и перезагрузки вызывает всплывающее окно JDialog с кнопкой отмены. В режиме автозагрузки это происходит каждые несколько секунд, когда окно JDialog запрашивает фокус каждый раз.Как остановить JDialog от запроса фокуса каждый раз?

Я попробовал позвонить setFocusableWindowState(false) на примере JDialog, но это не имело никакого значения. Может быть, потому, что это JDialog, а не какой-то другой подкласс Window?

UPDATE: setFocusableWindowState(false) действительно работает, я просто тупо запускал неправильный файл jar. Длинная история. Во всяком случае, я не удаляю вопрос, потому что, когда я сделал небольшое исследование, прежде чем опубликовать его, я увидел, что у нескольких других людей возникли проблемы с подобными проблемами. Это решение :)

+0

'JDialog' является подклассом' Window'. Вы можете попробовать настроить, чтобы окно не отображалось в автоматическом режиме или не пыталось использовать 'JWindow', но вы потеряете границу окна – MadProgrammer

+0

' setFocusableWindowState (false) ', где вы помещаете эту строку? –

+0

@Sharpedge после создания экземпляра (на самом деле это подкласс JDialog), который устанавливает значки и добавляет в конструктор окно-слушатель. Это происходит до вызова 'setVisible()'. – biggvsdiccvs

ответ

1

Вы должны поставить эти два заявления, в конструкторе класса, простирающейся JDialog

setFocusableWindowState(false); 
setFocusable(false); 

Итак, когда каждый раз, когда появляется JDialog, родительский контейнер по-прежнему иметь фокус на любой это было.

0

setFocusableWindowstate(). Произведение, в конце концов. Это была моя собственная глупая ошибка: я запускал неправильный файл jar, то есть не тот, у кого исправление. Спасибо всем за их предложения.