JDialog에 작은 문제가 있습니다. 모든 작업을 수행 한 후에도 닫힌 후 빈 프레임이 남습니다. 때문에 ClassCastException이, 나는 불행하게도, 해결책을 찾기 위해 꽤 오랜 시도되지 않은 한, 어느 쪽이JDialog를 닫으면 빈 프레임이 남습니다.
daughterWindow.dispatchEvent(new WindowEvent(validation, WindowEvent.WINDOW_CLOSING));
도
daughterWindow.setVisible(false);
daughterWindow.dispose();
도이 일이 가장 가능성이 나에게
WindowAdapter adapter = (WindowAdapter)jdialog.getWindowListeners()[0];
adapter.windowClosing(new WindowEvent((Window)jdialog, WindowEvent.WINDOW_CLOSING));
도움 마지막 하나가 던졌습니다. 스레드에서
이
예외 "AWT-EventQueue의-0"java.lang.ClassCastException가 : javax.swing.SwingUtilities $ SharedOwnerFrame이 java.awt.event.WindowAdapter
여기 내 코드의 캐스트 할 수없는, 어쩌면 누군가가 나에게 힌트를 줄 수 있습니다.
JDialog daughterWindow = new JDialog();
daughterWindow.setModal(true);
daughterWindow.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
daughterWindow.getContentPane().setLayout(new BoxLayout(daughterWindow.getContentPane(), BoxLayout.Y_AXIS));
UIManager.put("FileChooser.readOnly", Boolean.TRUE);
JFileChooser open = new JFileChooser();
File rsc = new File(System.getProperty("user.dir") + "\\rsc\\");
if(!rsc.exists()) rsc.mkdir();
open.setCurrentDirectory(new File(System.getProperty("user.dir") + "\\rsc\\"));
open.setDialogTitle("Ordner mit der Datenbank auswählen");
open.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(open.showOpenDialog(daughterWindow) == JFileChooser.APPROVE_OPTION){
UIManager.put("FileChooser.readOnly", Boolean.FALSE);
setValidateAccessWindowLayout(open.getSelectedFile());
daughterWindow.dispatchEvent(new WindowEvent(daughterWindow, WindowEvent.WINDOW_CLOSING));
} else{
UIManager.put("FileChooser.readOnly", Boolean.FALSE);
daughterWindow.dispatchEvent(new WindowEvent(daughterWindow, WindowEvent.WINDOW_CLOSING));
}
daughterWindow.setResizable(false);
daughterWindow.pack();
daughterWindow.setVisible(true);
사전에 감사합니다!
업데이트 : 분명히 불필요한 캐스트없이 세 번째 옵션을 체크 아웃했지만 그뿐만 아니라 도움이되지 않았다.
JFileChooser open = new JFileChooser();
모달로 정의 둘 다
JDialog daughterWindow = new JDialog();
및
:WindowListener adapter = daughterWindow.getWindowListeners()[0];
adapter.windowClosing(new WindowEvent(daughterWindow, WindowEvent.WINDOW_CLOSING));
더 도움이 빨리 들어, [MCVE] 또는 [짧은, 콘도, 올바른 예를 게시 ] (http://www.sscce.org/). –