本帖最后由 梁航斌 于 2013-4-10 10:18 编辑
我自己也写了个测试Demo,你的问题在打”*“号解决了。你可以运行一下我的测试Demo.再试着把判断去掉就会知道详细的原因了。
MenuItem mntmNewItem_1 = new MenuItem(menu_1, SWT.NONE);
mntmNewItem_1.setText("打开");
//打开文件
mntmNewItem_1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(getShell());
dialog.setFilterExtensions(new String[]{"*.txt","*.java","*.doc"});
String filePath=dialog.open();
//在获取后加判断,如果为空则跳出。不这样做的话,后面程序如果继续以名字封装File对象后,就会报空指针异常.
//*********************************************
if(filePath==null) return;
//*********************************************
try {
File file =new File(filePath);
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
String line=null;
StringBuffer buffer=new StringBuffer();
while((line=reader.readLine())!=null){
buffer.append(line);
buffer.append("\n");
}
text.setText(buffer.toString());
fileReader.close();
} catch (IOException e1){
// TODO 自动生成 catch 块
}
}
});
不好意思啊,上班赶时间也就没怎么注释,希望你看得懂,谢了哈{:soso_e113:}- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- class Demo
- {
- private Frame f;
- private MenuBar mb;
- private Menu m;
- private MenuItem mi;
- private FileDialog fd;
- Demo(){
- ini();
- }
- public void ini(){
- f = new Frame();
- f.setLayout(new FlowLayout());
- f.setBounds(300,200,200,200);
- fd = new FileDialog(f, "保存",FileDialog.LOAD);
- //fd.setVisible(false);
- mb = new MenuBar();
- m = new Menu("菜单");
- mi = new MenuItem("保存");
- m.add(mi);
- mb.add(m);
- f.setMenuBar(mb);
- f.setVisible(true);
- event();
- }
- public void event(){
- mi.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- fd.setVisible(true);
- String file = fd.getFile();
- //在获取后加判断,如果为空则跳出。不这样做的话,后面程序如果继续以名字封装File对象后,就会报空指针异常
- if(file==null)
- return;
- System.out.println(file);
- }
- });
- }
- public static void main(String []args){
- new Demo();
- }
- }
复制代码 |