编译并运行UseStream1.class。
3.使用JFrame或Frame窗体等GUI编程,实现一个记事本程序,实现文件的打开、编辑、保存;文本的全选、复制、剪切、粘贴等功能。
import java.awt.*;
import java.awt.event.*; import java.io.*;
import java.awt.datatransfer.*; class MyMenuBar extends MenuBar{ public MyMenuBar(Frame parent){ parent.setMenuBar(this); }
public void addMenus(String [] menus){ for(int i=0;i public void addMenuItems(int menuNumber,String[] items){ for(int i=0;i getMenu(menuNumber).add(new MenuItem(items[i])); else getMenu(menuNumber).addSeparator(); } } public void addActionListener(ActionListener al){ for(int i=0;i for(int j=0;j getMenu(i).getItem(j).addActionListener(al); } } class MyFile{ private FileDialog fDlg; public MyFile(Frame parent){ fDlg=new FileDialog(parent,\,FileDialog.LOAD); } private String getPath(){ return fDlg.getDirectory()+\+fDlg.getFile(); } public String getData() throws IOException{ fDlg.setTitle(\打开\); fDlg.setMode(FileDialog.LOAD); fDlg.setVisible(true); BufferedReader br=new BufferedReader(new FileReader(getPath())); StringBuffer sb=new StringBuffer(); String aline; while((aline=br.readLine())!=null) sb.append(aline+'\\n'); br.close(); return sb.toString(); } public void setData(String data) throws IOException{ fDlg.setTitle(\保存\); fDlg.setMode(FileDialog.SAVE); fDlg.setVisible(true); BufferedWriter bw=new BufferedWriter(new FileWriter(getPath())); bw.write(data); bw.close(); } } class MyClipboard{ private Clipboard cb; public MyClipboard(){ cb=Toolkit.getDefaultToolkit().getSystemClipboard(); } public void setData(String data){ cb.setContents(new StringSelection(data),null); } public String getData(){ Transferable content=cb.getContents(null); try{ return (String) content.getTransferData(DataFlavor.stringFlavor); }catch(Exception ue){} return null; } } class MyFindDialog extends Dialog implements ActionListener{ private Label lFind=new Label(\查找字符串\); private Label lReplace=new Label(\替换字符串\); private TextField tFind=new TextField(10); private TextField tReplace=new TextField(10); private Button bFind=new Button(\查找\); private Button bReplace=new Button(\替换\); private TextArea ta; public MyFindDialog(Frame owner,TextArea ta){ super(owner,\查找\,false); this.ta=ta; setLayout(null); lFind.setBounds(10,30,80,20); lReplace.setBounds(10,70,80,20); tFind.setBounds(90,30,90,20); tReplace.setBounds(90,70,90,20); bFind.setBounds(190,30,80,20); bReplace.setBounds(190,70,80,20); add(lFind); add(tFind); add(bFind); add(lReplace); add(tReplace); add(bReplace); setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ MyFindDialog.this.dispose(); } }); } public void showFind(){ setTitle(\查找\); setSize(280,60); setVisible(true); } public void showReplace(){ setTitle(\查找替换\); setSize(280,110); setVisible(true); } private void find(){ String text=ta.getText(); String str=tFind.getText(); int end=text.length(); int len=str.length(); int start=ta.getSelectionEnd(); if(start==end) start=0; for(;start<=end-len;start++){ if(text.substring(start,start+len).equals(str)){ ta.setSelectionStart(start); ta.setSelectionEnd(start+len); return; } } ta.setSelectionStart(end); ta.setSelectionEnd(end); } public Button getBFind() { return bFind; } private void replace(){ String str=tReplace.getText(); if(ta.getSelectedText().equals(tFind.getText())) ta.replaceRange(str,ta.getSelectionStart(),ta.getSelectionEnd()); else find(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==bFind) find(); else if(e.getSource()==bReplace) replace(); } } public class search_9_Jishiben extends Frame implements ActionListener{ private TextArea editor=new TextArea(); //可编辑的TextArea private MyFile mf=new MyFile(this);//MyFile对象 private MyClipboard cb=new MyClipboard(); private MyFindDialog findDlg=new MyFindDialog(this,editor); public search_9_Jishiben(String title){ //构造函数 super(title); MyMenuBar mb=new MyMenuBar(this); //添加需要的菜单及菜单项 mb.addMenus(new String[]{\文件\,\编辑\,\查找\,\帮助\}); mb.addMenuItems(0,new String[]{\新建\,\打开\,\保存\,null,\全选\}); mb.addMenuItems(1,new String[]{\剪贴\,\复制\,\粘贴\,\清除\,null,\全选\}); mb.addMenuItems(2,new String[]{\查找\,null,\查找替换\}); mb.addMenuItems(3,new String[]{\我的记事本信息\}); add(editor); //为菜单项注册动作时间监听器 mb.addActionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ search_9_Jishiben.this.dispose(); } }); //分号不能忘了 } //构造函数完 public void actionPerformed(ActionEvent e){ String selected=e.getActionCommand(); //获取菜单项标题 if(selected.equals(\新建\)) editor.setText(\); else if(selected.equals(\打开\)){ try{ editor.setText(mf.getData()); }catch(IOException ie){} } else if(selected.equals(\保存\)){ try{ mf.setData(editor.getText()); }catch(IOException ie){} } else if(selected.equals(\退出\)){ dispose(); } else if(selected.equals(\剪贴\)){ //将选中的字符串复制到剪贴板中并清除字符串 cb.setData(editor.getSelectedText()); editor.replaceRange(\,editor.getSelectionStart(),editor.getSelectionEnd()); } else if(selected.equals(\复制\)){ cb.setData(editor.getSelectedText()); } else if(selected.equals(\粘贴\)){ String str=cb.getData(); editor.replaceRange(str,editor.getSelectionStart(),editor.getSelectionEnd()); //粘贴在光标位置 } else if(selected.equals(\清除\)){ editor.replaceRange(\,editor.getSelectionStart(),editor.getSelectionEnd()); } else if(selected.equals(\全选\)){ editor.setSelectionStart(0); editor.setSelectionEnd(editor.getText().length()); } else if(selected.equals(\查找\)){ findDlg.showFind(); } else if(selected.equals(\查找替换\)){ findDlg.showReplace(); } } public static void main(String[] args){ search_9_Jishiben memo=new search_9_Jishiben(\记事本\); memo.setSize(650,450); memo.setVisible(true); } } 运行结果: 五、注意事项 ⒈认真填写实验报告 ⒉遵守实验室各项制度,服从实验指导教师的安排 ⒊按规定的时间完成实验 六、说明 ⒈建议学时数4学时 七、实验总结与体会 这个实验让我们了解文件的概念和文件对象的创建方法、了解FileInputStream和FileOutoutStream的基本概念,通过这些的学习实践学会了创建文件输入输出流,掌握了使用文件输入输出流读写文件的方法。也进一步的训练了菜单的制作,子项的添加,从中得到了快乐,悟出java其实很简单,都是有章可循的,尽管他的函数很多,但都是一一相关的。 实验十、数据库应用实验 一、实验目的 ⒈掌握Java应用程序连接数据库 ⒉掌握Java小应用程序连接数据库 二、预习内容 数据库表的应用 三、实验设备与环境 装有JAVA语言工具软件 (Eclipse )的微机若干 四、实验内容 ⒈完成一个系统:实现GUI的学生成绩管理 1) 在数据库创建表:学生表(学号、姓名、性别、出生年月)、课程表(课程号、课程名)、成绩表(学号、课程 号,成绩) 2) 实现用户登陆功能 3) 在主窗口实现学生信息管理、课程信息管理、成绩录入修改查询和提交功能、学生成绩的分析(统计各个分数 段的人数,并画出统计图) 程序实现: //用户登录 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class User extends JFrame{ private JLabel use,password; private JTextField k1;//用户名输入框 private JPasswordField k2;//密码输入框 private JButton b1,b2; //登录窗口 public User(JFrame f){ super(\系统登录\); Container c=getContentPane(); c.setLayout(new FlowLayout()); use=new JLabel(\账户\); use.setFont(new Font(\,Font.PLAIN,20)); password=new JLabel(\密码\); password.setFont(new Font(\,Font.PLAIN,20)); k1=new JTextField(14); k2=new JPasswordField(14); b1=new JButton(\登录\); b2=new JButton(\退出\); // 设置登录方法