Greenfoot: Jfilechooser вылетает программа
Поэтому я пишу программу для школьного проекта на Java с использованием Greenfoot. В моей программе я использую JFileChooser, чтобы позволить пользователю выбрать изображение для его редактирования и т. Д.
В любом случае, кажется, что JFileChooser всегда сбивает мою JVM, когда я запускаю его во второй раз. Это всегда работает, когда я впервые запускаю программу, но если я не перезапущу JVM и программу, она остановит мою программу при втором использовании.
Я не уверен, является ли это какой-то ошибкой или плохой практикой кодирования (может быть, неправильно распорядиться элементами свинга?)
По сути, это то, что я использую, чтобы открыть JFileChooser:
final JFileChooser fc = new JFileChooser();
JFrame frame = new JFrame();
fc.setFileFilter(new FileNameExtensionFilter("Images", "jpg", "png"));
int returnVal = fc.showOpenDialog(frame); //freezes here
if(returnVal == JFileChooser.APPROVE_OPTION) {
//etc...
Если это имеет значение, я использую Mac с Java 1.7.0_71
Любая помощь приветствуется - спасибо!
1 ответ
Greenfoot запускает ваш код в определенном потоке (внутренне называемом потоком моделирования). Если вы хотите использовать Swing, вы должны использовать его из потока Swing. Я полагаю, что ваш код заблокирован из-за использования классов Swing из потока Swing. Вы можете использовать EventQueue.invokeLater для переключения на поток Swing и обратно (Greenfoot не предназначен для поддержки этого, но все равно должен работать - invokeLater - лучшая ставка, чем invokeAndWait).