swing布局设计及事件监听和javabean数据管理事例
来源:互联网 发布:什么是数据铁笼? 编辑:程序博客网 时间:2024/06/05 20:05
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>/* *这是一个关于菜单以及事件监听器的例子 *其中包含了 JMenu JTable JToolBar 等控件的使用 *本例子用的是access,请先建立txb.mdb *由不足之处请指教:shengshuai@126.com */import java.net.*;import java.io.*;import java.sql.*;import java.util.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;import javax.swing.UIManager;import javax.swing.plaf.metal.MetalLookAndFeel;import java.util.Vector;import javax.swing.table.DefaultTableModel;public class txb{public txb(){fsframe Frame1 = new fsframe();Frame1.validate();Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = Frame1.getSize();if (frameSize.height > screenSize.height){frameSize.height = screenSize.height;}if (frameSize.width > screenSize.width){frameSize.width = screenSize.width;}Frame1.setLocation((screenSize.width - frameSize.width)/2,(screenSize.height - frameSize.height)/2);Frame1.setDefaultCloseOperation(3);Frame1.show();}public static void main(String[] args){try{UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");}catch(Exception e){e.printStackTrace();}new txb();}}class fsframe extends JFrame implements ActionListener{JLabel nemelabel = new JLabel("名字:");JLabel passlabel = new JLabel("密码:");JLabel zhuzhi = new JLabel("家庭住址:");JButton insertbutton = new JButton("添加");JButton exitbutton = new JButton("退出");JTextField namefield = new JTextField("圣帅");JTextField passfield = new JTextField("7820131");JTextField addr = new JTextField("东营职业学院学2(410)宿舍");JTextArea log = new JTextArea(10,0);JTextArea input = new JTextArea(4,0);JPanel inputpanel = new JPanel();JPanel buttonpanel = new JPanel();JScrollPane logscrollpane = new JScrollPane();JScrollPane inputsrollpane = new JScrollPane();JMenuBar Bare = new JMenuBar();JMenu filemenu = new JMenu("文件(F)");JMenuItem jianjie = new JMenuItem("关于本例");JMenuItem creattablemenuitem = new JMenuItem("建表");JMenuItem exitmenuitem = new JMenuItem("退出"); JMenu sqlmenu = new JMenu("SQL");JMenuItem select = new JMenuItem("查看");JMenuItem del = new JMenuItem("删除所有数据");JMenuItem deltable = new JMenuItem("删除表");JMenu about = new JMenu("关于(A)");JMenuItem aboutme = new JMenuItem("关于作者");JToolBar toolbar = new JToolBar();public fsframe(){setSize(Toolkit.getDefaultToolkit().getScreenSize().width/2,380);this.setResizable(false);this.getContentPane().setLayout(new BorderLayout());filemenu.setMnemonic(KeyEvent.VK_F);sqlmenu.setMnemonic(KeyEvent.VK_S);about.setMnemonic(KeyEvent.VK_A);Bare.add (filemenu);filemenu.add (creattablemenuitem);filemenu.add (exitmenuitem); exitmenuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,ActionEvent.CTRL_MASK));// 快捷键Bare.add(sqlmenu);sqlmenu.add(select);select.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));select.addActionListener(this);sqlmenu.add(del);del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,ActionEvent.CTRL_MASK));del.addActionListener(this);sqlmenu.addSeparator();sqlmenu.add(deltable);deltable.addActionListener(this);Bare.add(about);//about.add (jianjie);jianjie.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,ActionEvent.CTRL_MASK));about.add(aboutme);aboutme.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,ActionEvent.ALT_MASK));this.setJMenuBar(Bare);//-----menu action --------exitmenuitem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent exi){System.exit(0);}});jianjie.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent jiaj){JOptionPane.showMessageDialog(null,"这是一个关于布局和监听器的例子/n本例子的操作都对表user执行/n请先建立数据库txb.mdb");}});aboutme.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent jiaj){JOptionPane.showMessageDialog(null,"姓名:范圣帅/nEmail:shengshuai@126.com/n网址:http://www.shengshuai.260.cn/n http://www.myjavaserver.com/~shengshuai");}});creattablemenuitem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent creatt){creattablemenuitemframe creattablemenuitem1 = new creattablemenuitemframe(); creattablemenuitem1.show();creattablemenuitem1.hide();}});//----end----menu action -//Container contentpane = getContentPane();contentpane.setLayout(new BorderLayout());toolbar.add(jianjie);//toolbar.add(insertbutton);contentpane.add(toolbar,BorderLayout.NORTH);contentpane.add(inputpanel,BorderLayout.CENTER);inputpanel.setLayout(new GridLayout(3,2));inputpanel.add(nemelabel);inputpanel.add(namefield);inputpanel.add(passlabel);inputpanel.add(passfield);inputpanel.add(zhuzhi);inputpanel.add(addr);addr.addActionListener(this);contentpane.add(buttonpanel,BorderLayout.SOUTH);buttonpanel.add(insertbutton);insertbutton.addActionListener(this);buttonpanel.add(exitbutton);exitbutton.addActionListener(this);//-------------button action-------------}public void actionPerformed(ActionEvent ae){Object source = ae.getSource();JFrame resultframe = new JFrame();JScrollPane jScrollPane1 = new JScrollPane();JTable jTable1 = new JTable();// --------查询数据--------------------------------------if (source==select){access ctm = new access();ResultSet rs = ctm.executeQuery("SELECT * From user");try{getContentPane().add(jScrollPane1);Vector vcol = new Vector(); //列名Vector vrow = new Vector(); //内容vcol.addElement("名字");vcol.addElement("密码");vcol.addElement("住址");while (rs.next()){Vector vr1 = new Vector();vr1.addElement(rs.getString("username"));vr1.addElement(rs.getString("userpass"));vr1.addElement(rs.getString("address"));vrow.addElement(vr1);}DefaultTableModel dtm = new DefaultTableModel(vrow, vcol);jTable1 = new JTable(vrow, vcol);jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //滚动条设置左右滚jScrollPane1.getViewport().add(jTable1, null); //在滚动条中放入表resultframe.getContentPane().add(jScrollPane1);resultframe.setSize(400,400);resultframe.setLocation(200,20);resultframe.show();}catch(SQLException sqa){System.out.print(sqa);}//--------删除数据----------}else if(source == del){access ctm = new access();ctm.executeUpdate("DELETE * FROM USER");//---------删除表-----------}else if(source == deltable){ String tablename = JOptionPane.showInputDialog("请输入要删除的表名","user"); access ctm = new access(); ctm.executeUpdate("DROP TABLE " tablename); //-------插入数据------------}else if (source==insertbutton){access ctm = new access();String name = namefield.getText().trim();String pass = passfield.getText().trim();String address = addr.getText().trim();//System.out.print(name pass);ctm.executeUpdate("INSERT INTO user (username,userpass,address) VALUES ('" name "','" pass "','" address "')");}else if(source == exitbutton){System.exit(0);}}}class creattablemenuitemframe extends JFrame{public creattablemenuitemframe(){String tablename = JOptionPane.showInputDialog("请输入表名","user");access ctm = new access();ctm.executeUpdate("CREATE TABLE " tablename "(username string ,userpass string,address string )");hide();}}class access{String dbDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; String strCon = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="; Connection con = null;ResultSet rs = null;Statement stmt = null;public access(){try{Class.forName(dbDriver);}catch(java.lang.ClassNotFoundException e){System.err.println("数据库驱动程序加载失败,异常为:" e.getMessage());}finally{System.out.println("驱动程序加载成功");}}public ResultSet executeQuery(String strSQL){rs = null;try{con = DriverManager.getConnection(strCon "txb.mdb");Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs = stmt.executeQuery(strSQL);}catch(SQLException ex){JOptionPane.showMessageDialog(null,"executeQuery在执行" strSQL "失败了,异常为:/n" ex.getMessage());}finally{System.out.println("executeQuery--数据库连接成功");}return rs;}public void executeUpdate(String strSQL){try{con = DriverManager.getConnection(strCon "txb.mdb");stmt = con.createStatement();stmt.executeUpdate(strSQL);}catch(SQLException ex){JOptionPane.showMessageDialog(null,"executeUpdate在执行" strSQL "失败了,异常为:/n" ex.getMessage());}}}