在我的代码中,我要求用户选择图像。我的JFileChooser窗口运行正常。然后我重新启动了我的电脑,现在每当窗口出现时,它都无法以任何方式点击。我无法打开文件,我无法取消,我无法选择文件夹或文件。这是必要的代码。
JFileChooser jfc = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "jpeg");
jfc.setFileFilter(filter);
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
jfc.setVisible(true);
int ret = jfc.showOpenDialog(null);
if (ret == JFileChooser.CANCEL_OPTION) {
return;
}
File file_1 = jfc.getSelectedFile();
file_path = file_1.getAbsolutePath();
断点显示程序永远不会离开这一行:
int ret = jfc.showOpenDialog(null);
正如我所说,同样精确的代码在很久以前工作得很好。不确定是什么导致了这种情况。
在我的主程序中,我点击"添加图片"它调用前面提到的代码。我尝试点击窗口"打开"由" showOpenDialog"打开但是我点击的地方并不重要。没有什么变化。一旦我关闭"打开"主程序将恢复。我的任务经理的窗口。还有我的任务经理" Open"窗口没有说不响应,它看起来很好并在一个实例关闭,而且在文本字段内文本光标闪烁。
编辑:完全相同的代码适用于仅包含此代码的单独项目。
编辑2:一些额外的代码。
这是完整的load_file()函数。
public class Image {
private static String file_path;
private static ImageFrame frame;
public static boolean isImgLoaded = false;
public static void load_file(){
JFileChooser jfc = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "jpeg");
jfc.setFileFilter(filter);
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
jfc.setVisible(true);
int ret = jfc.showOpenDialog(null);
if (ret == JFileChooser.CANCEL_OPTION) {
return;
}
File file_1 = jfc.getSelectedFile();
file_path = file_1.getAbsolutePath();
ImageFrame frm = new ImageFrame();
frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frm.setVisible(true);
frame = frm;
isImgLoaded = frame.get_component().is_img_loaded();
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
closeFrame();
}
});
}
这是按下时调用该功能的按钮代码。 shlErgo是我建立UI的shell。
Button btnAddImage = new Button(shlErgo, SWT.NONE);
btnAddImage.setBounds(230, 10, 75, 25);
btnAddImage.setText("Add Image");
btnAddImage.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (!Image.isImgLoaded){
Image.load_file();
}
else{
Error.translate(2);
}
}
});