A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王金科 中级黑马   /  2012-8-23 17:01  /  1506 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王金科 于 2012-8-24 17:28 编辑
  1. package cn.study.gui;

  2. import java.awt.Dimension;
  3. import java.awt.FileDialog;
  4. import java.awt.Frame;
  5. import java.awt.Menu;
  6. import java.awt.MenuBar;
  7. import java.awt.MenuItem;
  8. import java.awt.TextArea;
  9. import java.awt.Toolkit;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.WindowAdapter;
  13. import java.awt.event.WindowEvent;
  14. import java.io.BufferedReader;
  15. import java.io.BufferedWriter;
  16. import java.io.File;
  17. import java.io.FileNotFoundException;
  18. import java.io.FileReader;
  19. import java.io.FileWriter;
  20. import java.io.IOException;

  21. public class MyMenuDemo {

  22.         /**
  23.          * @param args
  24.          */
  25.         public static void main(String[] args) {
  26.                 // TODO Auto-generated method stub

  27.                 new MyMenu();
  28.         }

  29. }


  30. class MyMenu{
  31.         private Frame f;
  32.         private MenuBar menuBar;
  33.         private TextArea ta;
  34.         private Menu fileMenu,editMenu;
  35.         private MenuItem xinjianItem,closeItem,openItem,saveItem;
  36.         private FileDialog openDialog,saveDialog;
  37.         private File file;
  38.         private String dirPath,fileName;
  39.         
  40.         MyMenu(){
  41.                 init();
  42.         }
  43.         
  44.         public void init(){
  45.                 f = new Frame("my window");
  46.                 Dimension dem=Toolkit.getDefaultToolkit().getScreenSize();
  47.                 int screenWidth=(int)dem.getWidth(),screenHeight=(int)dem.getHeight();
  48.                 int thisWidth=650,thisHeight=600;
  49.                 int thisX=(screenWidth-thisWidth)/2,thisY=(screenHeight-thisHeight)/2;
  50.                 f.setBounds(thisX,thisY,thisWidth,thisHeight);
  51.                
  52.                 ta = new TextArea();
  53.                 menuBar = new MenuBar();
  54.                 fileMenu = new Menu("文件");
  55.                 xinjianItem = new MenuItem("新建");
  56.                 closeItem = new MenuItem("退出");
  57.                 openItem = new MenuItem("打开");
  58.                 saveItem = new MenuItem("保存");
  59.                 editMenu = new Menu("编辑");
  60.                 openDialog = new FileDialog(f,"打开",FileDialog.LOAD);
  61.                 saveDialog = new FileDialog(f,"另存为",FileDialog.SAVE);
  62.                
  63.                 fileMenu.add(xinjianItem);
  64.                 fileMenu.add(openItem);
  65.                 fileMenu.add(saveItem);
  66.                 fileMenu.add(closeItem);
  67.                 menuBar.add(fileMenu);
  68.                 menuBar.add(editMenu);
  69.                 f.add(ta);
  70.                 f.setMenuBar(menuBar);
  71.                 f.setVisible(true);
  72.                 myEvent();
  73.         }
  74.         
  75.         private void myEvent(){
  76.                 xinjianItem.addActionListener(new ActionListener() {
  77.                         
  78.                         @Override
  79.                         public void actionPerformed(ActionEvent e) {
  80.                                 // TODO Auto-generated method stub
  81.                                 ta.setText("");
  82.                                 file = null;
  83.                         }
  84.                 });
  85.                
  86.                 saveItem.addActionListener(new ActionListener() {
  87.                         
  88.                         @Override
  89.                         public void actionPerformed(ActionEvent e) {
  90.                                 // TODO Auto-generated method stub
  91.                                 
  92.                                 if (file==null) {
  93.                                         saveDialog.setVisible(true);
  94.                                         dirPath = saveDialog.getDirectory();
  95.                                         fileName = saveDialog.getFile();
  96.                                         if (dirPath == null || fileName == null) {
  97.                                                 <font color="red">return;</font>
  98.                                         }
  99.                                         file = new File(dirPath, fileName);
  100.                                 }
  101.                                 try {
  102.                                         BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
  103.                                         String text = ta.getText();
  104.                                         bufw.write(text);
  105.                                         bufw.close();
  106.                                 } catch (IOException e1) {
  107.                                         // TODO Auto-generated catch block
  108.                                         e1.printStackTrace();
  109.                                 }
  110.                         }                        
  111.                 });
  112.                
  113.                 openItem.addActionListener(new ActionListener() {
  114.                         
  115.                         @Override
  116.                         public void actionPerformed(ActionEvent e) {
  117.                                 // TODO Auto-generated method stub
  118.                                 openDialog.setVisible(true);
  119.                                 dirPath = openDialog.getDirectory();
  120.                                 fileName = openDialog.getFile();
  121.                                 if(dirPath==null || fileName==null){
  122.                                         <font color="red">return;</font>
  123.                                 }
  124.                                 ta.setText("");
  125.                                 file = new File(dirPath,fileName);
  126.                                 try {
  127.                                         BufferedReader bufr = new BufferedReader(new FileReader(file));
  128.                                         String line = null;
  129.                                         while((line=bufr.readLine())!=null){
  130.                                                 ta.append(line+"\r\n");
  131.                                         }
  132.                                         bufr.close();
  133.                                 } catch (FileNotFoundException e1) {
  134.                                         // TODO Auto-generated catch block
  135.                                         e1.printStackTrace();
  136.                                 } catch (IOException e1) {
  137.                                         // TODO Auto-generated catch block
  138.                                         e1.printStackTrace();
  139.                                 }
  140.                         }
  141.                 });
  142.                
  143.                 f.addWindowListener(new WindowAdapter() {
  144.                         public void windowClosing(WindowEvent e){
  145.                                 System.exit(0);
  146.                         }
  147.                 });
  148.                
  149.                 closeItem.addActionListener(new ActionListener() {
  150.                         
  151.                         @Override
  152.                         public void actionPerformed(ActionEvent e) {
  153.                                 // TODO Auto-generated method stub
  154.                                 System.exit(0);
  155.                         }
  156.                 });
  157.         }
  158. }
复制代码
在以上一个简单的记事本代码中,这里面的return返回了一个什么?
起到什么作用?
为什么写成return null;编译就不通过?

还有,我这里面"新建"条目的功能这样写对不对?视频中没有,我自己想的
  1. xinjianItem.addActionListener(new ActionListener() {

  2. 84.                        

  3. 85.                        @Override

  4. 86.                        public void actionPerformed(ActionEvent e) {

  5. 87.                                // TODO Auto-generated method stub

  6. 88.                                ta.setText("");

  7. 89.                                file = null;

  8. 90.                        }

  9. 91.                });
复制代码

评分

参与人数 2技术分 +2 收起 理由
滔哥 + 1 随机奖励
张立江 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 唐杨 于 2012-8-23 17:15 编辑

                  if(dirPath==null || fileName==null){
                                        return;

这里的return;是用来结束本次判断的,不能又返回至,因为方法的返回值是void
也就是说,如果路径或文件名有一个为空,就结束本 if 方法体
此时return下边的file = new File(dirPath, fileName); 就不再执行了.

你下边的那个想法完全可以自己编入程序进行尝试.我看应该是没问题的.

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1

查看全部评分

回复 使用道具 举报
唐杨 发表于 2012-8-23 17:14
if(dirPath==null || fileName==null){
                                        retur ...

哦,明白了,这里return原来是这个作用,谢谢啦
回复 使用道具 举报
是这样的,其实每一个函数都有一个return,只是返回值类型为void时把return省略了。但是,有些时候,我们需要结束该函数(返回值类型为void且后面还有语句),这时就需要用return来结束该函数。有因为返回值类型为void,所以后面没有具体返回值。而“return null ”中,null是String类型,所以出错。
回复 使用道具 举报
请问楼主你那代码是怎样复制的?我复制粘贴怎么代码都左对齐了?
回复 使用道具 举报
邓超军 发表于 2012-8-23 21:10
是这样的,其实每一个函数都有一个return,只是返回值类型为void时把return省略了。但是,有些时候,我们需 ...

嗯,谢谢大家的热心帮助,我现在明白了return的作用了
回复 使用道具 举报
浅尝不止 发表于 2012-8-23 21:15
请问楼主你那代码是怎样复制的?我复制粘贴怎么代码都左对齐了?

我也发帖问过,你看一下我的那个帖子就明白了哦
回复 使用道具 举报
在方法里边,return是中断方法的执行,也就是跳出该方法了,return之后的语句是执行不了的,如果方法的返回值是void则是不返回任何值,所以只写return就行了,要是方法的返回值指定了返回类型,则return后要加上该类型的返回结果,要是不想返回东西,可又指定了返回类型则可以写return null;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马