实验五Java项目开发实例实验目的:掌握运用RAD开发Java应用程序目标要求:1.掌握运用VisualEditor创建窗口应用程序2.掌握通过JDBC连接数据库内容简介:本章将介绍MyLibrary的GUI应用程序。实验说明:第一节创建GUI应用程序1.添加JDBC环境变量在菜单栏点击“文件-新建-项目”,选择“Java项目”,点击“下一步”。输入项目名称“MyLibraryGUI”,点击“下一步”。在Java设置中选择“库”栏,点击“添加变量”。在“新建变量类路径条目”对话框中点击“配置变量”在“类途径变量”对话框中点击“新建”按钮,会弹出“新建变量条目”对话框。在“名称”栏中输入“CLOUDSCAPE_DRIVER_JAR”,然后点击“文件”按钮,找到D:/ProgramFiles/IBM/Rational/SDP/6.0/runtimes/base_v6/cloudscape/lib/db2j.jar,如下图:点击“确定”。再次点击“确定”。在弹出对话框点击“是”。在“新建变量类路径条目”窗口中选择,点击“确定”。这样就在MyLibraryGUI项目里添加了Cloudscape的JDBC驱动。点击“完成”按钮。2.新建可视类(VisualClass)在菜单栏选择“文件-新建-其它-Java-可视类”,点击“下一步”。在“Java类”窗口,“包”文本框输入mlg.library.gui,“名称”文本框输入“MyLibraryDesktopApp”,“样式”选择“Swing-框架”(选择后“超类”变成javax.swing.JFrame),点击“接口”右侧的“添加”,输入ActionListener,点击“确定”。勾选“pulibcstaticvoidmain(String[]args)”,点击“完成”在如下图的工作台中,点击1里的下三角箭头,将源代码区域最小化,点击2里的三角箭头使得选用板总是可见,将3处拉伸使得选用板中各控件可以很好看到。在RAD下侧的“属性”栏里,将“标题”的值改为“图书馆图书管理”,如果想改变大小,可以将修改“大小”的值。点击MyLibraryDesktopApp.java可视编辑器里的面板JPanel(不是整个框架JFrame),在下面的“属性”栏中找到“布局”,默认值为BorderLayout,在列表中选择GridBagLayout。Ctrl+S保存。3.添加GUI组件下面向JFrame里添加Swing组件,使得图书馆图书管理的应用程序如下所示:在左侧的“选用板”中点击“Swing组件”中的“JLabel”,然后将鼠标指针移至contentpane。这时鼠标指针会显示(0,0),这是GridBagLayout下的组件坐标。再次点击鼠标,这个JLabel会出现在contentpane的中央。在“选用板”选择一个JTextField,将它放在刚才那个JLabel的右边,鼠标指针会出现(1,0)。重复以上两步,一共添加共2个JLabel和JTextField。在(1,2)添加一个JButton。点击一下(0,0)的JLabel,再点击一下,输入“书名”两个字。用同样的方法,将第二个JLabel的文本改成“作者”。再将JButton的文本改成“添加”。4.运行可视类点击设计编辑器和属性栏之间的中的任一个箭头,使得源代码编辑器出现。在源代码区域找到main方法,添加如下代码,用于在这个java类启动后能够运行图形界面:publicstaticvoidmain(String[]args){MyLibraryDesktopAppapp=newMyLibraryDesktopApp();app.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);app.setVisible(true);}右键点击“包资源管理器”中的MyLibraryDesktopApp.java,选择“运行-Java应用程序”会看到MyLibraryDesktopApp.java程序的运行界面:5.添加事件处理方法为上小节新建的“添加”按钮添加事件。在MyLibraryDesktopApp.java的可视编辑界面,右键点击“添加”按钮,选择“事件-添加事件”,在弹出的“添加事件”向导直接点击“完成”按钮。察看MyLibraryDesktopApp.java的源代码,会看到添加了如下代码:privateJButtongetJButton(){if(jButton==null){jButton=newJButton();jButton.setText(添加);jButton.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){System.out.println(actionPerformed());//TODOAuto-generatedEventstubactionPerformed()}});}returnjButton;}现在将其中负责处理按钮事件的的publicvoidactionPerformed(java.awt.event.ActionEvente){System.out.println(actionPerformed());//TODOAuto-generatedEventstubactionPerformed()}更改为如下代码,作用是当用户按下按钮后将用户所输入的信息添加到数据库,如果添加成功则弹出添加成功的消息框。publicvoidactionPerformed(java.awt.event.ActionEvente){StringBookName=jTextField.getText();StringBookAuthor=jTextField1.getText();try{BookInfoFactory.InsertBooksInfo(BookName,BookAuthor);JOptionPane.showMessageDialog(null,BookName+已成功添加到数据库,添加成功,JOptionPane.INFORMATION_MESSAGE);}catch(SQLExceptione1){e1.printStackTrace();}}(产生的错误将在下一节处理)6.GUI应用程序通过JDBC与数据库的连接在“包资源管理器”中的MyLibraryGUI项目点击右键,选择“新建-包”,输入包名“mlg.library.db”,在新建的包mlg.library.db中点击右键,选择“新建-类”,新建一个DatabaseManager.java的类,指定JDBC和数据源,用于与数据库连接。输入以下代码:publicclassDatabaseManager{publicstaticConnectiongetConnection()throwsSQLException{Connectioncon=null;try{Class.forName(com.ibm.db2j.jdbc.DB2jDriver);con=DriverManager.getConnection(jdbc:db2j:D:\\Projects\\RAD\\database\\MyLibrary);}catch(Exceptione){e.printStackTrace();con.close();}returncon;}}RAD会给出错误提示,需要导入相应的类库,点击“Shift+Ctrl+O”,选择“java.sql.Connection”,点击“完成”:同样在mlg.library.db包下新建一个名为“BooksInfoFactory.java”的类,InsertBooksInfo()方法用于接受用户输入信息后将信息转换为输入数据库的SQL语句并执行,使其写到数据库中,getAllBooksInfo()从数据库中取得所有图书信息。输入如下代码:publicclassBookInfoFactory{publicstaticvoidInsertBooksInfo(Stringname,Stringauthor)throwsSQLException{Stringid=(newDouble((Math.floor(1000000*Math.random())))).toString();StringSQLstr=INSERTINTOmls.bookinfo+(ID,BOOKNAME,AUTHOR)+VALUES('+id+','+name+','+author+');System.out.println(SQLstr);DatabaseManager.getConnection().createStatement().executeUpdate(SQLstr);}}并用“Shift+Ctrl+O”导入相应的包。运行MyLibraryDesktopApp.java,输入一本书的信息,比如:点击“添加”,如果添加成功,会有提示:在RAD右上角的透视图选择“数据”,转换到数据模式透视图。在左下侧的“数据库资源管理器”,右键点击“MyLibraryConnection”,选择“重新连接”。连接成功后选择“MLS-表-MLS.ACCOUNTINFO”,点击右键选择“样本内容”可以在“DB输出”栏看到刚才添加的书籍的信息已经成功输入到数据库中