网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1220|回复: 0
打印 上一主题 下一主题

[Java] Java项目实战之天天酷跑(二)

[复制链接]

271

主题

284

帖子

1243

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1243

最佳新人活跃会员热心会员突出贡献优秀版主

跳转到指定楼层
楼主
发表于 2021-2-24 19:30:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、登录界面界面功能需求图如下:
接下来我们再做一些准备工作:导入相关图片素材。
将天天酷跑的图片(Image)资源解压到桌面后,(Image文件如下图所示:)
复制到Eclipse中,单击src,直接Ctrl+V。
本文将实现cn.sqc.runday.view这一界面内容。
相关代码如下:
  1. package cn.sqc.runday.view;

  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.io.File;
  8. import java.io.IOException;

  9. import javax.imageio.ImageIO;
  10. import javax.swing.BorderFactory;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import javax.swing.JLabel;
  15. import javax.swing.JOptionPane;
  16. import javax.swing.JPanel;
  17. import javax.swing.JPasswordField;
  18. import javax.swing.JTextField;

  19. /**
  20. *
  21. * @author Huey
  22. * @date 2020-11-16
  23. * 登录界面:用户名输入框  密码输入框  登录取消按钮 功能
  24. *
  25. */
  26. public class LoginFrame extends JFrame{
  27.         //用户名变量(文本)
  28.         JLabel userLabel;
  29.         //用户名输入框(文本输入框)
  30.         JTextField userField;
  31.         //密码变量(文本)
  32.         JLabel userLabel2;
  33.         //密码输入框(文本输入框)
  34.         JPasswordField userField2;
  35.         //登录按钮、取消按钮(按钮)
  36.         JButton Login,Cancel;

  37.         public LoginFrame() {//直接 alt / (无参构造)        
  38.                 userLabel = new JLabel("用户名");        
  39.                 //设置字体
  40.                 userLabel.setFont(new Font("微软雅黑",Font.BOLD,18));                                
  41.                 userLabel2 = new JLabel("密  码");
  42.                 userLabel2.setFont(new Font("微软雅黑",Font.BOLD,18));
  43.                         
  44.                 //布局方式:绝对布局
  45.                 userLabel.setBounds(20, 220, 100, 30);//x位置,y位置,所占显示空间的大小
  46.                 this.add(userLabel);//将用户名这三个字添加到登录界面上,以下同理
  47.                 userLabel2.setBounds(20, 280, 100, 30);
  48.                 this.add(userLabel2);

  49.                 //用户名输入框
  50.                 userField = new JTextField();
  51.                 userField.setBounds(80, 220, 100, 30);
  52.                 //设置输入框凹陷效果
  53.                 userField.setBorder(BorderFactory.createLoweredBevelBorder());
  54.                 //设置输入框背景透明
  55.                 userField.setOpaque(false);
  56.                 this.add(userField);
  57.                
  58.                 userField2 = new JPasswordField();
  59.                 userField2.setBounds(80, 280, 100, 30);
  60.                 userField2.setBorder(BorderFactory.createLoweredBevelBorder());
  61.                 userField2.setOpaque(false);
  62.                 this.add(userField2);
  63.                
  64.                
  65.                
  66. //登录按钮
  67.                 Login = new JButton("登录");
  68.                 Login.setBounds(45,350,60,36);
  69.                 //Login.setBackground(new Color(44,22,44));//背景色
  70.                 //Login.setForeground(Color.BLUE);//前景色               
  71.                 //绑定登录按钮的事件监听
  72.                 Login.addActionListener(new ActionListener() {//ActionListener alt /
  73.                         
  74.                         @Override
  75.                         public void actionPerformed(ActionEvent e) {
  76.                                 //System.out.println("点击登录按钮");
  77.                                 //获取用户名输入框的内容
  78.                                 String userName = userField.getText();
  79.                                 String passWord = userField2.getText();//横杠原因:方法太老了,不推荐用
  80.                                 if("Huey".equals(userName) && "123".equals(passWord)){
  81.                                         //登录成功
  82.                                         JOptionPane.showMessageDialog(null, "欢迎"+userName+"来到天天酷跑游戏");
  83.                                         //跳转到下一界面
  84.                                        
  85.                                         //关闭当前界面
  86.                                         dispose();
  87.                                 }else if("".equals(userName) || "".equals(passWord)){
  88.                                         //不能为空
  89.                                         JOptionPane.showMessageDialog(null, "用户名 / 密码不能为空,请重新输入!");
  90.                                 }else{
  91.                                         JOptionPane.showMessageDialog(null, "用户名 / 密码输入错误,请重新输入!");
  92.                                 }
  93.                                 
  94.                         }
  95.                 });
  96.                 this.add(Login);
  97.                
  98. //取消按钮
  99.                 Cancel = new JButton("取消");
  100.                 Cancel.setBounds(135,350,60,36);
  101.                 this.add(Cancel);
  102.                 Cancel.addActionListener(new ActionListener() {
  103.                         
  104.                         @Override
  105.                         public void actionPerformed(ActionEvent e) {
  106.                                 // TODO Auto-generated method stub
  107.                                 dispose();
  108.                         }
  109.                 });
  110.                

  111.                
  112.                 //创建背景面板,并添加到窗体上去
  113.                 LoginPanel panel = new LoginPanel();
  114.                 this.add(panel);        
  115.                
  116.                 //设置登录界面的基本属性
  117.                 this.setSize(900,530);
  118.                 this.setLocationRelativeTo(null);//位置居中
  119.                 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  120.                 this.setUndecorated(true);
  121.                
  122.                 //设置窗体的Logo图标
  123.                 this.setIconImage(new ImageIcon("Image/115.png").getImage());//存储图片
  124.                 this.setVisible(true);
  125.         }
  126.         
  127.         
  128.         
  129.         //测试用的main方法       main + Alt /
  130.         public static void main(String[] args) {
  131.                 new LoginFrame();
  132.         }
  133.         class LoginPanel extends JPanel{//画板
  134.                 //背景图片变量
  135.                 Image background;//------ctr shift + o 导包
  136.                 public LoginPanel() {//-----alt / 回车 构造方法                在{后双击,显示作用域
  137.                         //读取图片文件,赋值给background变量
  138.                         try {//-----虽然不大可能,但也做好吃饭噎死的准备
  139.                                 background = ImageIO.read(new File("Image/login.jpg"));//----read参数为File类型
  140.                         } catch (IOException e) {//-------捕获异常信息
  141.                                 // 打印异常日志信息
  142.                                 e.printStackTrace();
  143.                         }
  144.                 }
  145.                 //绘制方法
  146.                 @Override
  147.                 public void paint(Graphics g) {
  148.                         super.paint(g);
  149.                         //绘制背景图片
  150.                         g.drawImage(background, 0, 0,900,530, null);//900,530为宽高
  151.                 }
  152.         }
  153.         
  154. }
  155. //throws ......抛异常,将下面的异常向上抛,交给上级:不建议   
复制代码

为了更清楚地看出代码结构,这里给出部分代码的作用域。
LoginFrame作用域一直到最后一个}
LoginPanel的代码块:
运行结果截图:
1.界面
2.登录
2.1、用户名及密码输入为空的情况:
2.2、用户名或密码输入错误的情况:
2.3、用户名及密码输入正确的情况:
单击弹窗中的“确定”,直接退出。
3.退出
点“取消”即可

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-5-5 14:02 , Processed in 0.053950 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表