У меня есть приложение, которое создает несколько полноэкранных кадров без оформления (в основном контролируя все пространство экрана). Моя проблема в том, что некоторые кнопки на определенных кадрах предназначены для «переключения экранов», что в основном означает отображение другого кадра вместо текущего.
Я легко добился этого в Windows, используя это:
target.setVisible(true);
target.requestFocus();
this.parent.setVisible(false);
Где target
— кадр, на который я переключаюсь. Это работает, потому что изначально я сделал невидимыми все кадры, кроме первого «основного» кадра.
Теперь, когда я переношу это в среду Linux, я получаю уродливое «мигание» при смене кадров. За эту долю секунды я могу увидеть фон своего рабочего стола и все открытые окна, которые существуют за моим приложением. У меня была эта проблема в Windows раньше, и я исправил ее, сфокусировав целевой кадр, прежде чем сделать старый невидимым.
Любые идеи о том, как решить эту проблему Linux?
редактировать:
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setUndecorated(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
this.getContentPane().setLayout(null);
setVisible(true);
validate();
KeyStrokes
связано сFocus
, может быть, больше информации (действительно с незавершенным для всех возможных событий) stackoverflow.com/questions/309023/, или уOP
есть проблема с установкойFocus
на конкретныйJComponents
??? - person mKorbel   schedule 13.07.2011validate();
послеsetVisible(true)
, нет причин вызыватьValidate Container
, это не имеет ничего общего с самым ленивым ответом, пожалуйста, возьмите код (автор @Andrew Thompson) 2nd. сClassName ImageCacheTest
stackoverflow. com/questions/6368160/, раскомментировать //halfScreenSize = new Dimension(d.width - 11, d.height - 51); а затем отключите halfScreenSize = new Dimension(d.width/2, d.height/2); , это очень тяжело для процессора и графического процессора, если мерцание, зависание ..., значит что-то не так внутри ПК/патч для ОС - person mKorbel   schedule 26.07.2011parent.setVisible(false);
, вставивSwingUtilities.invokeLater()
? Это может помочь. - person jfpoilpret   schedule 27.07.2011