Я хочу, чтобы иметь возможность обнаруживать, когда все экземпляры JInternalFrame
в JDesktopPane
закрыты. Я просматривал события, запущенные на панели рабочего стола, и я не вижу того, что применимо. Я попытался добавить JInternalFrameListener
к каждому добавленному на панель рабочего стола и прослушиванию закрытого события, но это, похоже, не работает.Как определить, когда все внутренние кадры закрыты в области рабочего стола?
-3
A
ответ
0
Вот рабочий пример:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class InternalFrameDemo extends JFrame {
JDesktopPane desktop;
InternalFrameAdapter adapter;
int frameCount = 0;
public InternalFrameDemo() {
super("InternalFrameDemo");
adapter = new InternalFrameAdapter() {
public void internalFrameClosed(InternalFrameEvent e) {
frameCount--;
if (frameCount == 0) {
JOptionPane.showMessageDialog(InternalFrameDemo.this, "All internal frames closed.");
}
}
};
setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
desktop = new JDesktopPane();
createFrame();
createFrame();
createFrame();
setContentPane(desktop);
}
protected void createFrame() {
JInternalFrame frame = new JInternalFrame("title", true, true);
frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
frameCount++;
frame.addInternalFrameListener(adapter);
desktop.add(frame);
}
private static void createAndShowGUI() {
InternalFrameDemo frame = new InternalFrameDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (UnsupportedLookAndFeelException e) {
// handle exception
}
catch (ClassNotFoundException e) {
// handle exception
}
catch (InstantiationException e) {
// handle exception
}
catch (IllegalAccessException e) {
// handle exception
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Вы в основном добавить слушателя на каждой внутренней раме и следить за открытых и закрытых кадров (с переменной INT).
Смежные вопросы
- 1. Захват экрана целевой области рабочего стола
- 2. C# Обновление рабочего стола рабочего стола
- 3. Определить версию протокола удаленного рабочего стола программно?
- 4. Области Ibeacon закрыты?
- 5. Определить RunWorker рабочего стола с анонимным методом?
- 6. Как определить, когда выполняются конкретные кадры анимации
- 7. Как определить, когда удаленный дисплей сбрасывает кадры?
- 8. Разработка кроссплатформенного рабочего стола
- 9. Настройка рабочего стола eclipse
- 10. Режим какао-фона Когда все окна закрыты
- 11. Как создать виджеты рабочего стола
- 12. Как я могу программно определить размер моего рабочего стола?
- 13. Пропустить самые внутренние кадры в backtrace
- 14. Событие, когда все формы mdi закрыты
- 15. open_file() не работает, когда все представления закрыты
- 16. Как сохранить состояние рабочего стола?
- 17. Как использовать «Все» (поиск рабочего стола) SDK в приложении MFC?
- 18. Внешние плагины для рабочего стола для рабочего стола Phonegap
- 19. Как определить узел сеанса удаленного рабочего стола с помощью реестра?
- 20. Действительность рабочего стола
- 21. Launchd предотвращает смену рабочего стола с рабочего стола
- 22. C# Обновление рабочего стола рабочего стола из класса
- 23. Переключение рабочего стола в vista
- 24. Как изменить класс css, когда все вкладки закрыты в ui.bootstrap.accordion
- 25. Генерирование рабочего стола .NET
- 26. Как создать макет рабочего стола?
- 27. Безопасность рабочего стола Sitecore
- 28. Изменение обоев для рабочего стола
- 29. Синхронизация фона рабочего стола
- 30. Как получить дескриптор рабочего стола?
Покажите код, в котором вы его реализуете, возможно, кто-то может помочь вам. – Frakcool
См. ['JInternalFrame.addInternalFrameListener (InternalFrameListener)'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html#addInternalFrameListener-javax.swing.event.InternalFrameListener-) для закрытия одного окна. Сохраните список внутренних фреймов и удалите их из списка при закрытии. * «но это, похоже, не работает». * Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –