抽取代码块
选择需要抽取的代码块->鼠标右键->Refactor->Extract Method
package com.test; import handler.LoginHandler; import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.net.URL; public class LoginViewTest extends JFrame { JLabel titleNameLabel=new JLabel("学生成绩管理系统",JLabel.CENTER); SpringLayout spLayout=new SpringLayout(); JPanel centerPanel=new JPanel(spLayout); JLabel userNameLabel=new JLabel("用户名:"); JLabel userPwdLabel=new JLabel("登录密码:"); JTextField nameTxd=new JTextField(); JPasswordField pwdFiled=new JPasswordField(); JButton loginBtn=new JButton("登录"); JButton resetBtn=new JButton("重置"); //声明桌面系统托盘SystemTray SystemTray systemTray; TrayIcon trayIcon; LoginHandler loginHandler; public LoginViewTest(){ super("学生成绩管理系统"); loginHandler=new LoginHandler(this); //获取内容面板 Container contentPane =getContentPane(); //设置标题的字体,格式,大小 titleNameLabel.setFont(new Font("华文行楷",Font.PLAIN,40)); titleNameLabel.setPreferredSize(new Dimension(0,80)); //设置中间各个组件的字体,大小,格式 Font centerFont=new Font("华文行楷",Font.PLAIN,20); userNameLabel.setFont(centerFont); nameTxd.setPreferredSize(new Dimension(200,30)); userPwdLabel.setFont(centerFont); pwdFiled.setPreferredSize(new Dimension(200,30)); loginBtn.setFont(centerFont); resetBtn.setFont(centerFont); contentPane.setBackground(Color.pink); //把组件加入到面板上 centerPanel.add(userNameLabel); centerPanel.add(userPwdLabel); centerPanel.add(nameTxd); centerPanel.add(pwdFiled); centerPanel.add(loginBtn); centerPanel.add(resetBtn); loginBtn.addActionListener(loginHandler);//增加登录按键的事件监听 loginBtn.addKeyListener(loginHandler);//增加键盘按键监听事件 resetBtn.addActionListener(loginHandler);//增加重置按键的事件监听 contentPane.add(titleNameLabel,BorderLayout.NORTH); contentPane.add(centerPanel,BorderLayout.CENTER); //设置中间组件的位置,弹簧布局 layoutCenter(); //判断当前系统是否支持系统托盘 if(SystemTray.isSupported()){ systemTray=SystemTray.getSystemTray();//初始化系统托盘 URL imgUrl = LoginViewTest.class.getClassLoader().getResource("LoginView.jpg"); trayIcon=new TrayIcon(new ImageIcon(imgUrl).getImage());//初始化托盘图标 trayIcon.setImageAutoSize(true);//托盘图标可以自动缩放大小 try { systemTray.add(trayIcon);//将托盘图标加入到系统托盘组件中,并抛出异常 } catch (AWTException e) { e.printStackTrace(); } //创建一个事件响应,最小化时销毁资源 this.addWindowListener(new WindowAdapter() { @Override public void windowIconified(WindowEvent e) { LoginViewTest.this.dispose(); } }); //托盘事件监听(鼠标单击一次托盘,窗口将会正常显示) trayIcon.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int clickCont=e.getClickCount(); if(clickCont==1){ LoginViewTest.this.setExtendedState(JFrame.NORMAL); } LoginViewTest.this.setVisible(true); } }); } //设置loginBtn为默认按钮,按下回车键时默认响应loginBtn的键盘响应 getRootPane().setDefaultButton(loginBtn); //设置窗口图片 URL imgUrl=LoginViewTest.class.getClassLoader().getResource("LoginView.jpg"); setIconImage(new ImageIcon(imgUrl).getImage()); //设置窗口基本参数 setSize(600,400); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); setResizable(false); setVisible(true); } private void layoutCenter() { //获取组件的宽度Spring.width(组件名)用户名和用户名文本框组件 Spring titleLabelWidth=Spring.width(userNameLabel); Spring titleTextWidth=Spring.width(nameTxd); Spring spaceWidth=Spring.constant(20);//userNameLabel和nameTxd的间距 Spring totalWidth=Spring.sum(Spring.sum(titleLabelWidth,titleTextWidth),spaceWidth); int offSetX=totalWidth.getValue()/2; /* SpringLayout:布局管理器 SpringLayout.Constraints:使用弹簧布局的容器里面的组件的布局约束,每个组件对应一个 Spring:能够进行四则运算的整数 */ /* 窗口相当于一个左顶角为原点的第四象限的坐标轴 */ //1.设置好用户名标签的位置(约束) SpringLayout.Constraints titleLabelCon=spLayout.getConstraints(userNameLabel); //用户名标签userNameLabel的西边参考centerPanel组件水平中心点方向左偏移offSetX的距离 spLayout.putConstraint(SpringLayout.WEST,userNameLabel,-offSetX,SpringLayout.HORIZONTAL_CENTER,centerPanel); //设置用户名标签的垂直标签 spLayout.putConstraint(SpringLayout.NORTH,userNameLabel,20,SpringLayout.NORTH,centerPanel); //or使用setY()设置垂直偏移量 // titleLabelCon.setY(Spring.constant(50));//垂直偏移量 //2.设置用户名文本框nameTxd的位置(约束) spLayout.putConstraint(SpringLayout.WEST,nameTxd,20,SpringLayout.EAST,userNameLabel); spLayout.putConstraint(SpringLayout.NORTH,nameTxd,0,SpringLayout.NORTH,userNameLabel); //3.设置密码标签userPwdLabel的位置 spLayout.putConstraint(SpringLayout.NORTH,userPwdLabel,20,SpringLayout.SOUTH,userNameLabel); spLayout.putConstraint(SpringLayout.EAST,userPwdLabel,0,SpringLayout.EAST,userNameLabel); //4.设置密码文本框pwdFiled的位置(约束) spLayout.putConstraint(SpringLayout.WEST,pwdFiled,20,SpringLayout.EAST,userPwdLabel); spLayout.putConstraint(SpringLayout.NORTH,pwdFiled,0,SpringLayout.NORTH,userPwdLabel); //5.设置登录按钮loginBtn的位置 spLayout.putConstraint(SpringLayout.EAST,loginBtn,-20,SpringLayout.HORIZONTAL_CENTER,centerPanel); spLayout.putConstraint(SpringLayout.NORTH,loginBtn,50,SpringLayout.SOUTH,pwdFiled); //6.设置重置按钮resetBtn的位置 spLayout.putConstraint(SpringLayout.WEST,resetBtn,20,SpringLayout.HORIZONTAL_CENTER,centerPanel); spLayout.putConstraint(SpringLayout.NORTH,resetBtn,50,SpringLayout.SOUTH,pwdFiled); } public static void main(String[] args){ new LoginViewTest(); } public JTextField getNameTxd() { return nameTxd; } public JPasswordField getPwdFiled() { return pwdFiled; } }
package handler; import com.test.LoginViewTest; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class LoginHandler extends KeyAdapter implements ActionListener{ private LoginViewTest loginView; public LoginHandler(LoginViewTest loginView){ this.loginView=loginView; } @Override public void actionPerformed(ActionEvent e){ JButton jButton=(JButton) e.getSource(); String text=jButton.getText(); if("重置".equals(text)){ loginView.getNameTxd().setText("");//获取NameTxd上的用户名并置空 loginView.getPwdFiled().setText("");//获取PwdFiled上的密码并置空 }else if("登录".equals(text)){ login(); } } private void login() { String user=loginView.getNameTxd().getText();//获取NameTxd上的用户名 char []chars=loginView.getPwdFiled().getPassword();//获取PwdFiled上的密码 String pwd=new String(chars);//转为字符串型 System.out.println(user+":"+pwd); //查询database,验证 boolean flag=false; if(false){ }else{ JOptionPane.showMessageDialog(loginView,"用户名密码错误"); } } @Override //键盘监听,按下回车键 public void keyPressed(KeyEvent e) { if(KeyEvent.VK_ENTER==e.getKeyCode()) { login(); } } }