package guoyu;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.PasswordAuthentication;
class LoginListener implements ActionListener{
private JComboBox<Object>jco;
private JPasswordField jpa;
private JFrame jf;
public LoginListener(JComboBox<Object>jco,JPasswordField jpa,JFrame jf) {
super();
this.jco = jco;
this.jpa = jpa;
this.jf = jf;
}
boolean passwd(String name, String pwd) {
String t = " " + name + " " + pwd + " ";
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("D:\\user.txt"));
// 临时字符串
String s = "";
while ((s = br.readLine()) != null) {
if (t.equals(s)) {
return true;
}
}
return false;
} catch (Exception e2) {
e2.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return false;
}
public void actionPerformed(ActionEvent e) {
String name = (String) jco.getSelectedItem();
String pwd = new String(jpa.getPassword());
if(passwd(name, pwd)){
jf.dispose();
JFrame f=new JFrame("聊天窗口");
f.setLayout(new BorderLayout());
f.setSize(400, 300);
f.setLocation(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea showArea =new JTextArea(12,34);
JScrollPane scrollPane=new JScrollPane(showArea);
showArea.setEditable(false);
JTextField inputField=new JTextField(20);
JButton btn=new JButton("发送");
int t=0;
btn.addActionListener(a ->{//聊天
String content=inputField.getText();
if(content!=null&&!content.trim().equals("")){
showArea.append("发送的信息: "+content+"\n");
}
else {
showArea.append("聊天信息不能为空!"+"\n");
}
inputField.setText("");
});
JPanel panel=new JPanel();
JLabel label=new JLabel("聊天信息");
panel.add(label);
panel.add(inputField);
panel.add(btn);
f.add(scrollPane,BorderLayout.PAGE_START);
f.add(panel,BorderLayout.PAGE_END);
}
else {
JOptionPane.showMessageDialog(null, "你输入的账户名或密码不正确,请重新输入!");
}
}
}
public class RTFIL{
private static JFrame jf=new JFrame();
public static void initLogin() {
jf.setSize(426, 300);
jf.setLocation(497, 242);
jf.setUndecorated(true);
jf.setResizable(false);
BorderLayout border_layout=new BorderLayout();
jf.setLayout(border_layout);
JPanel panel_north=createpanel.CreatNorthPanel(jf);
jf.add(panel_north,border_layout.PAGE_START);
JPanel panel_center=createpanel.CreateCenterPanel(jf);
jf.add(panel_center, border_layout.CENTER);
JPanel panel_west=createpanel.CreateWestPanel();
jf.add(panel_west, border_layout.LINE_START);
JPanel panel_east=createpanel.CrateEastPanel();
jf.add(panel_east, border_layout.LINE_END);
JPanel panel_south=createpanel.CreateSouthPanel();
jf.add(panel_south, border_layout.PAGE_END);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
public static void main(String[]args) {
SwingUtilities.invokeLater(RTFIL::initLogin);
}
}
class createpanel{
private static LoginListener ll = null;
public static JPanel CreatNorthPanel(JFrame jf) {
// 1、创建一个JPanel顶部面板
JPanel panel=new JPanel();
// 取消面板内默认布局
panel.setLayout(null);
// 设置顶部面板尺寸
panel.setPreferredSize(new Dimension(0, 140));
// 1.1、向顶部面板添加背景图片
ImageIcon image=new ImageIcon("images/back.jpg");
JLabel background=new JLabel(image);
// 设置背景图片的位置及尺寸
background.setBounds(0,0,426,image.getIconHeight());
panel.add(background);
// 1.2、在顶部JPanel面板右上角添加一个退出按钮
JButton out = new JButton(new ImageIcon("images/close_normal.jpg"));
out.addActionListener(event -> jf.dispose());
out.setBounds(403,0,26,26);
// 设置鼠标移动到退出按钮时更改图片
out.setRolloverIcon(new ImageIcon("images/close_hover.jpg"));
// 取消按钮边框效果
out.setBorderPainted(false);
panel.add(out);
// 为退出按钮注册***,用来关闭窗口
out.addActionListener(event -> jf.dispose());
return panel;
}
public static JPanel CreateCenterPanel(JFrame jf) {
JPanel panel = new JPanel();
panel.setLayout(null);
String str [] = {"123456789","666666","88888888"};
JComboBox<Object>jcoCenter = new JComboBox<Object>(str);
panel.add(jcoCenter);
jcoCenter.setEditable(true);
jcoCenter.setBounds(0,15,175,30);
jcoCenter.setFont(new Font("Calibri",0,13));
JPasswordField jpaCenter = new JPasswordField();
jpaCenter.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0));
jpaCenter.setBounds(0,44,175,30);
jpaCenter.setPreferredSize(new Dimension(185,25));
panel.add(jpaCenter);
ImageIcon image = new ImageIcon("images/keyboard.jpg");
JButton jbu = new JButton(image);
jbu.setPreferredSize(new Dimension(22,20));
jbu.setBorderPainted(false);
jpaCenter.add(jbu);
JCheckBox jch1 = new JCheckBox("记住密码");
jch1.setFocusPainted(false);
jch1.setFont(new Font("宋体",0,13));
jch1.setBounds(0,85,80,20);
panel.add(jch1);
JCheckBox jch2 = new JCheckBox("自动登录");
jch2.setFocusPainted(false);
jch2.setFont(new Font("宋体",0,12));
jch2.setBounds(100,85,80,20);
panel.add(jch2);
ll = new LoginListener(jcoCenter,jpaCenter,jf);
return panel;
}
public static JPanel CreateWestPanel() {
JPanel panel=new JPanel();
panel.setLayout(null);
panel.setPreferredSize(new Dimension(130,0));
ImageIcon image=new ImageIcon("images/qq.jpg");
JLabel background=new JLabel(image);
background.setBounds(0,0,120,110);
panel.add(background);
return panel;
}
public static JPanel CrateEastPanel() {
JPanel panel=new JPanel();
panel. setLayout(null);
panel. setPreferredSize(new Dimension(100, 0));
JLabel regeist=new JLabel("注册账号");
regeist. setForeground (new Color(100,149, 238));
regeist. setBounds(0, 13, 60, 30);
regeist.setFont(new Font("宋体",0,12));
JLabel regetpwd=new JLabel("找回密码");
regetpwd.setForeground (new Color(100,149,238));
regetpwd.setBounds (0,43,60,30);
regetpwd.setFont(new Font("宋体",0,12));
panel.add(regetpwd);
panel.add(regeist);
return panel;
}
public static JPanel CreateSouthPanel() {
JPanel panel=new JPanel();
panel.setPreferredSize(new Dimension(0,51));
panel.setLayout(null);
JButton jble=new JButton(new ImageIcon("images/single_normal.jpg"));
jble.setPreferredSize(new Dimension(40,40));
jble.setFocusPainted(false);
jble.setRolloverIcon(new ImageIcon("images/single_down.jpg"));
jble.setBorderPainted(false);
jble.setContentAreaFilled(false);
jble.setBounds(0, 10, 40, 40);
jble.setToolTipText("多账号登录");
ImageIcon image=new ImageIcon("images/login_normal.jpg");
JButton jb=new JButton("登 录",image);
jb.setFont(new Font("宋体",0,13));
jb.setBounds(130,0,175,40);
jb.setHorizontalTextPosition(SwingConstants.CENTER);
jb.setFocusPainted(false);
jb.setContentAreaFilled(false);
jb.setBorderPainted(false);
jb.setRolloverIcon(new ImageIcon("images/login_hover.jpg"));
JButton jbri=new JButton(new ImageIcon("images/right_normal.jpg"));
jbri.setBounds(380,10,40,40);
jbri.setFocusPainted(false);
jbri.setBorderPainted(false);
jbri.setContentAreaFilled(false);
jbri.setRolloverIcon(new ImageIcon("images/right_hover.jpg"));
jbri.setToolTipText("二维码登录");
panel.add(jble);
panel.add(jb);
panel.add(jbri);
jb.addActionListener(ll);
return panel;
}
}