>>>在线充值<<<
【必读】通信广角各点值说明一级士官及以上在这领广角币网上购买广角币,实时充值网上支付实时获取广角币教程!!!
【跟帖有奖】挣取广角币完全指南! 这里领取每天赠送的4广角币 华为无线培训课程通信广角08年精华内容大集合
发新话题
打印

由一个简单的程序谈起

[标题]由一个简单的程序谈起

精华全集  冲广角币  获取广角币的更多方法

【名称】:由一个简单的程序谈起――之四(精华)
【作者】:江苏 无锡 缪小东
【格式】:PDF
【页数】:11
【语言】:中文
【出版社】:
【出版日期】:
【摘要或目录】:

本篇主要讲述控制器、视图以及主程序的实现!这些是GUI的所有部分! 一、 视图的实现 视图在这个程序中极其简单,它主要实现View接口中的方法就可以了!以下是我们视图的程序。 //ViewPanel.java import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; class ViewPanel extends JPanel implements View { JTextField name ; JSpinner age ; JComboBox grade ,clas ; JRadioButton male , femal ; JTextArea comment ; //以上是整个视图中所有的有程序逻辑相关的一些组件 //其它的与程序逻辑无关的组件放在方法的内部,这样可以减少不必要的复杂性, //同时有效地控制了对象的生命周期 public ViewPanel(){ //这是一个构造器,主要完成加载GUI的功能 initGUI(); //一般在编写查询的时候,很少将太多的代码放到构造器中 } //好处是可想而知的。不信,可以阅读Collections中的代码 public Student Collect(){ //View接口中的方法,主要负责从界面搜集数据,组成业务单元 Student stu = new Student(); //创建一个默认的对象 stu.setName(name.getText()); //下面是从视图得到数据,放入业务单元 stu.setGrade(grade.getSelectedItem().toString()); stu.setClas(clas.getSelectedItem().toString()); stu.setAgender(male.isSelected()); stu.setComment(comment.getText()); return stu ; //返回此,代表当前View的业务单元 } //该方法主要被控制器使用 public void display(Student stu){ //显式业务单元Student name.setText(stu.getName()); //下面是将业务单元显式在视图中 grade.setSelectedItem(stu.getGrade());
2
clas.setSelectedItem(stu.getClas()); age.setValue(stu.getAge()); male.setSelected(stu.isMale()); comment.setText(stu.getComment()); setAllEnable(false); } //该方法主要被控制器调用 //显示所有显式元件是否可编辑的方法 //该方法应该被抽象出来组成一个整体,以避免同样的代码散落在程序的其它角落 public void setAllEnable(boolean b){ name.setEnabled(b); grade.setEnabled(b); clas.setEnabled(b); age.setEnabled(b); male.setEnabled(b); femal.setEnabled(b); comment.setEnabled(b); // Component[] comps = this.getComponents(); // for(int i = 0 ; i < comps.length;i++){ // comps.setEnabled(b); // System.out.println(comps); // } //博客其它地方讲过,Swing组件中使用一个重要的模式“组合模式” //以上就是一个得到当前组件中所有子元素的方法,然后再设置其属性 //简单明了吧!这个方法和上面那么多句是等效的! //细心的读者可能发现多了一个向系统Console打印各个元件的语句 //主要是由于前两天有个家伙说他向数据库写入数据时数据就是某个 //TextField,对吗??我在看了其API后说不可能!你说可能吗? //结果不是TextField中的内容。 //你看看TextField有没有覆盖父类的toString方法。没有吧! //那就是绝对不可能返回TextField中的内容。 } private JPanel createRightPanel(){ //创建右边的面板,好像名字反了吧! JPanel p = new JPanel(new GridLayout(0,2)); p.add(createLabel("姓名")); name = new JTextField(20); p.add(name); p.add(createLabel("年龄")); //这里将所有创建Label的方法放到一起了 age = new JSpinner(new SpinnerNumberModel(20, 0, 100, 1)); // SpinnerNumberModel model = new SpinnerNumberModel(50, 0, 100, 1); //创建一个JSpinner对象!看看给的参数是什么啊!! //一个典型的MVC的模型model,这是一个以数字为内容的模型 //详细的关于MVC以及Swing请关注博客的其它文章 p.add(age); p.add(createLabel("年级"));




附件: 您所在的用户组无法下载或查看附件
本贴地址:http://bbs.tong-xin.com/viewthread.php?tid=19874&fromuid=0
点击复制,把本帖地址粘贴到MSN/QQ/邮件/网络上给朋友分享,即可获得广角币!
发新话题