Java 如何正确应用SWT库?

Java 如何正确应用SWT库?,java,eclipse,swt,awt,Java,Eclipse,Swt,Awt,我每次跑步都会遇到这样的错误,我想在我附加SWT的方式上有问题,有什么建议可以应用吗 javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(ImageIO.java:1301) at test_guiiii.gui_rec.image_resize(gui_rec.java:160) at test_guiiii.gui_rec$2.widgetSelected(gui_rec.java:

我每次跑步都会遇到这样的错误,我想在我附加SWT的方式上有问题,有什么建议可以应用吗

javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at test_guiiii.gui_rec.image_resize(gui_rec.java:160)
at test_guiiii.gui_rec$2.widgetSelected(gui_rec.java:117)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4230)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1491)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1514)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1499)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1299)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4072)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3698)
at test_guiiii.gui_rec.open(gui_rec.java:57)
at test_guiiii.gui_rec.main(gui_rec.java:42)
每次我尝试调试时,只要按下错误按钮,就会收到类似的消息:

这是主类的完整代码:

package test_guiiii;

import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.graphics.Image;

import java.awt.Graphics2D;
//import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import test_guiiii.Rec_det;
import org.eclipse.wb.swt.SWTResourceManager;

public class gui_rec {
//private static JFileChooser jfc = new JFileChooser();
protected Shell shlGui;
Display display = Display.getDefault();
String file_path= null;
String file_name = null;
private Text txt_open;
/**
 * Launch the application.
 * @param args
 */
public static void main(String[] args) {
    try {
        gui_rec window = new gui_rec();
        window.open();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * Open the window.
 */
public void open() {
    //Display display = Display.getDefault();
    createContents();
    shlGui.open();
    shlGui.layout();
    while (!shlGui.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
}

/**
 * Create contents of the window.
 */
protected void createContents() {
    shlGui = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN );
    shlGui.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY));
    shlGui.setSize(945, 566);

    //shell.setMaximized(true);

    shlGui.setText("Graphical User Interface");
    //scrolledComposite.setMinSize(lbl_Image.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    Label lbl_image = new Label(shlGui, SWT.BORDER | SWT.CENTER);
    lbl_image.setBackground(SWTResourceManager.getColor(SWT.COLOR_GRAY));
    lbl_image.setBounds(10, 10, 361, 465);

    txt_open = new Text(shlGui, SWT.BORDER);
    txt_open.setBounds(93, 493, 278, 25);
    txt_open.setEditable(false);



    Label lbl_rec = new Label(shlGui, SWT.BORDER | SWT.CENTER);
    lbl_rec.setBackground(SWTResourceManager.getColor(SWT.COLOR_GRAY));
    lbl_rec.setBounds(408, 10, 361, 465);

    Button btnNewButton = new Button(shlGui, SWT.NONE);
    btnNewButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Rec_det detect = new Rec_det();
            detect.det(file_path);
            image_resize(lbl_image, "result_new.jpg");                                  

            lbl_rec.setImage(new Image(display, "saved.png"));;
        }
    });
    btnNewButton.setBounds(530, 493, 112, 25);
    btnNewButton.setText("initiate recognition");

    Button btnOpen = new Button(shlGui, SWT.NONE);
    btnOpen.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {

            FileDialog dlg = new FileDialog(shlGui, SWT.MULTI);

            String fn = dlg.open();
            if (fn != null) {
                txt_open.setText(dlg.getFilterPath());
                file_name = dlg.getFileName();
                file_path = dlg.getFilterPath();
                file_path = file_path+'\\'+file_name;
                //System.out.println(file_path);
                image_resize(lbl_image,file_path);                                  

                lbl_image.setImage(new Image(display, "saved.png"));;
            }

        }
    });

    btnOpen.setBounds(10, 493, 75, 25);
    btnOpen.setText("Open");

    Button btnOpenInNew = new Button(shlGui, SWT.NONE);
    btnOpenInNew.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            BufferedImage img;
            try {
                img = ImageIO.read(new File("result_new.jpg"));
                image_Open_nw nw = new image_Open_nw();
                nw.Mouse(img);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

        }
    });
    btnOpenInNew.setBounds(788, 93, 141, 25);
    btnOpenInNew.setText("Open in new window");

    Label lblToViewThe = new Label(shlGui, SWT.NONE);
    lblToViewThe.setAlignment(SWT.CENTER);
    lblToViewThe.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY));
    lblToViewThe.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED));
    lblToViewThe.setBounds(788, 11, 141, 65);
    lblToViewThe.setText("To view the output image\r\nof the Recognition process\r\nmore clearly and for the \r\npost processing ");


}

protected void image_resize( Label lbl_image, String file_path){

    try {
         BufferedImage img1 = ImageIO.read(new File(file_path));

        int h = img1.getHeight(null);
        int w = img1.getWidth(null);

        int temp=0,temp1 = 0;

        for(int i=1; i< 100; i++){

             temp = h/i;
             temp1 = w/i;
             //System.out.println(temp);
             if(temp < lbl_image.getSize().y && temp1 < lbl_image.getSize().x){
                 i = 102;
             }

         }

       BufferedImage resizedImg = new BufferedImage(temp1, temp, BufferedImage.TRANSLUCENT);
       Graphics2D g2 = resizedImg.createGraphics();
       g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
       g2.drawImage(img1, 0, 0,temp1, temp, null);
       g2.dispose();

        File outputfile = new File("saved.png");
        ImageIO.write(resizedImg, "png", outputfile); 

    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
}
}
package test\u guiiii;
导入org.eclipse.swt.widgets.Display;
导入org.eclipse.swt.widgets.FileDialog;
导入org.eclipse.swt.widgets.Shell;
导入org.eclipse.swt.widgets.Button;
导入org.eclipse.swt.graphics.Image;
导入java.awt.Graphics2D;
//导入java.awt.Image;
导入java.awt.RenderingHints;
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
导入org.eclipse.swt.swt;
导入org.eclipse.swt.events.SelectionAdapter;
导入org.eclipse.swt.events.SelectionEvent;
导入org.eclipse.swt.widgets.Label;
导入org.eclipse.swt.widgets.Text;
进口测试报告;
导入org.eclipse.wb.swt.SWTResourceManager;
公共类gui_rec{
//私有静态JFileChooser jfc=新JFileChooser();
保护壳shlGui;
Display=Display.getDefault();
字符串文件\ u路径=空;
字符串文件_name=null;
私有文本txt_打开;
/**
*启动应用程序。
*@param args
*/
公共静态void main(字符串[]args){
试一试{
gui_rec window=new gui_rec();
window.open();
}捕获(例外e){
e、 printStackTrace();
}
}
/**
*打开窗户。
*/
公开作废{
//Display=Display.getDefault();
createContents();
shlGui.open();
shlGui.layout();
而(!shlGui.isDisposed()){
如果(!display.readAndDispatch()){
display.sleep();
}
}
}
/**
*创建窗口的内容。
*/
受保护的void createContents(){
shlGui=新外壳(显示,SWT.CLOSE | SWT.TITLE | SWT.MIN);
shlGui.setBackground(SWTResourceManager.getColor(SWT.COLOR\u深灰色));
shlGui.setSize(945566);
//shell.setMaximized(true);
setText(“图形用户界面”);
//scrolledComposite.setMinSize(lbl_Image.computeSize(SWT.DEFAULT,SWT.DEFAULT));
标签lbl|U图像=新标签(shlGui,SWT.BORDER | SWT.CENTER);
lbl_image.setBackground(SWTResourceManager.getColor(SWT.COLOR_GRAY));
lbl_图像。立根(10,10361465);
txt_open=新文本(shlGui,SWT.BORDER);
txt_open.setBounds(93493278,25);
txt_open.setEditable(false);
标签lbl_rec=新标签(shlGui,SWT.BORDER | SWT.CENTER);
lbl_rec.setBackground(SWTResourceManager.getColor(SWT.COLOR_GRAY));
lbl_rec.setBounds(408,10361465);
按钮BtnewButton=新按钮(shlGui,SWT.NONE);
添加SelectionListener(新建SelectionAdapter()){
@凌驾
公共无效WidgeSelected(SelectionEvent e){
Rec_det detect=新Rec_det();
detect.det(文件路径);
图像调整(lbl图像,“result_new.jpg”);
lbl_rec.setImage(新图像(显示“saved.png”);;
}
});
btnNewButton.setBounds(530、493、112、25);
setText(“启动识别”);
按钮btnOpen=新按钮(shlGui,SWT.NONE);
btnOpen.addSelectionListener(新的SelectionAdapter(){
@凌驾
公共无效WidgeSelected(SelectionEvent e){
FileDialog dlg=newfiledialog(shlGui,SWT.MULTI);
字符串fn=dlg.open();
如果(fn!=null){
txt_open.setText(dlg.getFilterPath());
file_name=dlg.getFileName();
file_path=dlg.getFilterPath();
文件路径=文件路径+'\\'+文件名;
//System.out.println(文件路径);
图像大小(lbl图像、文件路径);
lbl_image.setImage(新图像(显示“saved.png”);;
}
}
});
btnOpen.挫折(10493,75,25);
btnOpen.setText(“打开”);
按钮BTNOPENINEW=新按钮(shlGui,SWT.NONE);
btnOpenInNew.addSelectionListener(新的SelectionAdapter(){
@凌驾
公共无效WidgeSelected(SelectionEvent e){
缓冲图像img;
试一试{
img=ImageIO.read(新文件(“result_new.jpg”);
image_Open_nw=newimage_Open_nw();
nw.小鼠(img);
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
}
});
新立根(788,93,141,25);
btnOpenInNew.setText(“在新窗口中打开”);
Label lbltoviewth=新标签(shlGui,SWT.NONE);
LBLTOVIEW.SETALIGHT(SWT.CENTER);
lbltoview.setBackground(SWTResourceManager.getColor(SWT.COLOR\u DARK\u GRAY));
lbltoview.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED));
lbltoview.立根(788,11,141,65);
lblToViewThe.setText(“以更清晰地查看识别过程的输出图像,\r\n并进行后期处理”);
}
受保护的无效图像\u调整大小(标签lbl\u图像、字符串文件\u路径){
试一试{
buffereImage img1=ImageIO.read(新文件(文件路径));
inth=img1.getHeight(null);
int w=img1.getWidth(null);
int temp=0,temp1=0;
对于(int i=1;i<100;i++){
温度=h/i;
temp1=w/i;
//系统输出打印项次(温度);
if(temp