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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田建 高级黑马   /  2012-6-8 06:56  /  1724 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田建 于 2012-6-8 06:58 编辑
  1. /**
  2. 写一个关于记事本的小程序
复制代码
这是我在编写记事本小程序的时候遇到的一个小问题,为什么在frame中设置文本区域没有效果,不论设不设置流式布局都是一样,然而把流式布局和文本区域的设置都去掉,采用默认布局又可以了,为什么?
  1. @author田建
  2. @version v1.1
  3. */

  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.io.*;
  7. class MyMenuDemo
  8. {
  9.         private Frame f;
  10.         private TextArea ta;
  11.         private MenuBar mb;
  12.         private Menu me;
  13.         private MenuItem miNew,miSave,miLoad;
  14.         private File file;
  15.         
  16.         private FileDialog openDia,saveDia;
  17.         
  18.         MyMenuDemo()
  19.         {
  20.                 init();
  21.         }
  22.         
  23.         
  24.         public void init()
  25.         {
  26.                 f=new Frame("田建--记事本");
  27.                 f.setBounds(300,100,650,600);
  28.                 ta=new TextArea();
  29.                 //ta.setBounds(302,105,400,300);
  30.             //f.setLayout(new FlowLayout());//为什么设置成了流式布局之后再设置文本区域没有效果
  31.                
  32.                 mb=new MenuBar();
  33.                 me=new Menu("文件(F)");
  34.                 miNew=new MenuItem("新建");
  35.                 miSave=new MenuItem("保存(S)");
  36.                 miLoad=new MenuItem("打开(O)");
  37.                
  38.                 mb.add(me);
  39.                 me.add(miNew);
  40.                
  41.                 me.add(miLoad);
  42.                 me.add(miSave);
  43.                 f.setMenuBar(mb);
  44.                 f.add(ta);
  45.                
  46.                 openDia=new FileDialog(f,"打开文件",FileDialog.LOAD);
  47.                 saveDia=new FileDialog(f,"保存文件",FileDialog.SAVE);        
  48.         
  49.                 myEvent();
  50.                 f.setVisible(true);
  51.         
  52.         }
  53.         
  54.         public void myEvent()
  55.         {
  56.                 f.addWindowListener(new WindowAdapter()
  57.                 {
  58.                         public void windowClosing(WindowEvent e)
  59.                         {
  60.                                 System.exit(0);
  61.                         }
  62.                 });
  63.                 miLoad.addActionListener(new ActionListener()
  64.                 {
  65.                         public void actionPerformed(ActionEvent e)
  66.                         {
  67.                                 openDia.setVisible(true);
  68.                                 String dirPath=openDia.getDirectory();
  69.                                 String fileName=openDia.getFile();
  70.                                 if(dirPath==null||fileName==null)
  71.                                         return;
  72.                                 ta.setText("");
  73.                                 file=new File(dirPath,fileName);
  74.                                 try
  75.                                 {
  76.                                         BufferedReader bufr=new BufferedReader(new FileReader(file));
  77.                                         String line=null;
  78.                                         while((line=bufr.readLine())!=null)
  79.                                         {
  80.                                                 ta.append(line+"\r\n");
  81.                                         }
  82.                                         bufr.close();
  83.                                 }
  84.                                 catch(IOException ex)
  85.                                 {
  86.                                         throw new RuntimeException("读取失败");
  87.                                 }
  88.                         }
  89.                 });
  90.                 miSave.addActionListener(new ActionListener()
  91.                 {
  92.                         public void actionPerformed(ActionEvent e)
  93.                         {
  94.                                 if(file==null)
  95.                                 {
  96.                                         saveDia.setVisible(true);
  97.                                         String dirPath=saveDia.getDirectory();
  98.                                         String fileName=saveDia.getFile();
  99.                                         if(dirPath==null||fileName==null)
  100.                                                 return;
  101.                                         file=new File(dirPath,fileName);
  102.                                 }
  103.                         
  104.                         try
  105.                         {
  106.                                 BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
  107.                                 String text=ta.getText();
  108.                                 bufw.write(text);
  109.                                 bufw.close();
  110.                         }
  111.                         catch(IOException ex)
  112.                         {
  113.                                 throw new RuntimeException("");
  114.                         }
  115.                 }
  116.         });
  117.                
  118.         }
  119.         
  120.         public static void main(String[] args)
  121.         {
  122.                 new MyMenuDemo();
  123.         }
  124.         
  125. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
GUI布局模式中, 默认是BorderLayout布局模式,如果只添加一个组件(比如按钮)会居中并填满窗口(毕老师讲过的),而这正好是我们所要的效果;
若设置成f.setLayout(new FlowLayout());就会按流式布局排列,先第一个居中,随后一个个跟上,不是我们要的效果;

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 恭喜~~~黑马见~~

查看全部评分

回复 使用道具 举报
加上f.setLayout(new FlowLayout()); 效果是不能全都覆盖的 只能显示一部分  因为布局改变了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马