Java实现文件开启器
因此,我试图制作一个按钮,在其中打开一个文件选择器来导入图像 我的问题是: 1-我希望fileChoser仅显示图像文件(.jpg…) 2-当FileOpener打开时,应禁用其他窗口,直到 文件开启器已释放。在我的例子中,它们是禁用的,但是当我点击它们时,我的程序由于某种原因崩溃了 3-如果有更好的文件开启器,它将受到欢迎,这不是我的,我在网上找到的 以下是我的源代码:Java实现文件开启器,java,image,label,swt,Java,Image,Label,Swt,因此,我试图制作一个按钮,在其中打开一个文件选择器来导入图像 我的问题是: 1-我希望fileChoser仅显示图像文件(.jpg…) 2-当FileOpener打开时,应禁用其他窗口,直到 文件开启器已释放。在我的例子中,它们是禁用的,但是当我点击它们时,我的程序由于某种原因崩溃了 3-如果有更好的文件开启器,它将受到欢迎,这不是我的,我在网上找到的 以下是我的源代码: public class FileOpener { private JFileChooser file_chooser =
public class FileOpener {
private JFileChooser file_chooser = new JFileChooser();
StringBuilder path = new StringBuilder();
public File choosed() {
File file = null;
if(file_chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
file = file_chooser.getSelectedFile();
Scanner input = null;
try {
input = new Scanner(file);
} catch (FileNotFoundException e) {
System.out.println("Fail");
e.printStackTrace();;
}
while(input.hasNext()) {
path.append(input.nextLine());
}
input.close();
}
return file;
}
public String getPath() {
return path.toString();
}
}
这是我的电话(这里有一个问题是启用禁用窗口):
请注意,这段代码是有效的,但我只是在尝试修复bug,“ScaleImage”功能会重新缩放所选图像以适应我的标签。我只需删除所有干扰shell的内容,即可修复启用禁用问题:
Button button_2 = new Button(composite_1, SWT.FLAT);
button_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileOpener v = new FileOpener();
File file = v.choosed();
shell.forceActive();
if(file != null) {
Image image = new Image(shell.getDisplay(), file.getPath());
Image image2 = main.ScaleImage(image, Image_input);
Image_input.setImage(image2);
}
}
});
我使用FileDialog完全解决了我的问题:
Button button_2 = new Button(composite_1, SWT.FLAT);
button_2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog test = new FileDialog(shell);
test.open();
File file = new File(test.getFilterPath()+"\\"+test.getFileName());
if(file != null) {
Image image = new Image(shell.getDisplay(), file.getPath());
Image image2 = main.ScaleImage(image, Image_input);
Image_input.setImage(image2);
}
}
});
感谢greg-449的回答。我不知道如何使用新的GUI,但要获得文件路径:
test.getFilterPath()+"\\"+test.getFileName()
如果它工作得很好,为什么您要尝试修复这些bug???它工作得很好,我修复了它JFileChooser是Swing GUI系统的一部分,对于SWT,您应该使用
FileDialog
。避免混合使用SWT和Swing它会给您带来很多问题。greg-449,我刚刚尝试了FileDialog,它比FileChoser更好,但是我无法获取所选对象的路径,是否有可以发送给我的源代码?FileDialogopen
方法返回所选文件的路径。还有getFileName()
和getFileNames()
方法。
test.getFilterPath()+"\\"+test.getFileName()