swing布局设计及事件监听和javabean数据管理事例

本文介绍了一个使用Java Swing构建的桌面应用程序示例。该程序演示了如何通过Swing创建包含菜单、表格和工具栏的GUI界面,并实现了数据库操作,如查询、插入、删除等基本功能。
<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()); } } }
提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习修改: 通过阅读模型中的注释查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值