java窗口程序实例_Java Swing快速构建窗体应用程序

以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一个窗体应用程序. 总体下来,感觉和winform开发相差也不大,只是一些具体的设置或者语法有些差异,可以通过查阅相关资料进行掌握:

1 应用结构

新建一个java应用程序JavaApp,并创建相关的包及文件,其中简单实现了一个登录界面(JDBC 访问MYSQL数据库),登录成功后跳转到主界面.在主界面上单击菜单,可以打开子窗体.java swing自带的JTabbedPane没有显示关闭按钮的功能,这里在com.mkmis.controls包下自定义了一个TabbedPane控件,可以实现带关闭按钮的页签面板.应用结构如下图所示:

a7b1fde8860fb97941d098b62022db40.png

2 登陆界面设计

在IDE中新建一个Login的JFrame窗体,单击[设计]视图,可以将组件面板中的相关控件拖放到界面上,和Vistual Studio的操作差别不大,就是界面显示效果较差,不及Vistual Studio.用户名文本框用的文本字段,密码框用的是口令字段控件.登录和退出按钮用的是按钮控件.

9739e47360213f78dfa769e5c7d8bc9f.png

设计完成后,单击运行按钮,界面效果如下图所示:

34a780bb9d729a874ba4a634272d4fe2.png

3 相关属性设置

Java Swing的很多属性设置用的方法,而NET用的属性.例如设置窗体标题,java swing用的是setTitle().另外窗体居中用的是setLocationRelativeTo(getOwner()). 获取文本框的值为getText()方法,如下代码所示:

1 publicLogin() {2 initComponents();3 setTitle("登录");4 setDefaultCloseOperation(EXIT_ON_CLOSE);5 setVisible(true);6 setResizable(false);7 setLocationRelativeTo(getOwner()); //居中显示

8

9 }

1 private voidbtnLoginActionPerformed(java.awt.event.ActionEvent evt) {2 //TODO add your handling code here:

3 if(this.txtUserName.getText()!="" && this.txtPWD.getText().toString()!="")4 {5 Connection conn =DBConnection.getConnection();6 PreparedStatement ps = null;7 ResultSet rs = null;8 try{9 ps = conn.prepareStatement(

"select * from users where UserName = ? and password = ?");10 ps.setString(1,this.txtUserName.getText());//

11 ps.setString(2, this.txtPWD.getText());12 rs =ps.executeQuery();13 while(rs.next()) {14 User user = newUser();15 user.setId(rs.getInt("id"));16 user.setUsername(rs.getString("UserName"));17 user.setPassword(rs.getString("password"));18

19 System.out.println(user.toString());20 //跳转页面

21 FrameMain frm=newFrameMain(user.getUsername());22 frm.setVisible(true);23 this.dispose();//关闭当前窗体

24

25 }26 } catch(SQLException e) {27 e.printStackTrace();28 } finally{29 DBConnection.closeResultSet(rs);30 DBConnection.closeStatement(ps);31 DBConnection.closeConnection(conn);32 }33

34 }35 }

显示一个窗体是设置其setVisiable(true);关闭一个窗体用的dispose();在登录界面想着输完用户名和密码后,按enter键可以自动登录,在网上搜下,发现了一个变通的方法,就是监听密码框的keypressed事件,当然需要验证一下用户名和密码是否为空(此处未加验证!),如下代码所示:

1 private voidtxtPWDKeyPressed(java.awt.event.KeyEvent evt) {2 //TODO add your handling code here:

3 if(evt.getKeyCode()==KeyEvent.VK_ENTER)4 {5 //调用登录事件

6 btnLoginActionPerformed(null);7

8 }9 }

4 主界面

登录成功后,单击左边的树叶节点,通过反射动态实例化窗体(实际上菜单应该从数据库加载)并显示,主界面如下:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值