package application;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.URL;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.ResourceBundle;
import Dao.messageDao;
import Dao.onlineDao;
import Dao.userDao;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import model.Message;
import model.User;
import model.Useronline;
public class Controller implements Initializable {
@FXML
private Button registerButton;//进入注册界面按钮,handle方法进入
@FXML
private Button loginbtn;//登录按钮,进入聊天室
@FXML
private Button sendmsg;//发送信息,sendmesssage方法进入
@FXML
private Button registbtn;//进入注册界面点击注册
@FXML
private TextField loginname;
@FXML
private PasswordField loginpw;
@FXML
private Label tips;//显示用户名不存在的
@FXML
private Label tips2;//显示密码错误的
@FXML
private PasswordField loginpw2;
@FXML
private Label usernametips;
@FXML
private Label pwtips;
@FXML
private TextArea onlinetext;
@FXML
private TextField text;
@FXML
private TextArea showmess;
private String content="";
private userDao dao=new userDao();
static onlineDao onlineDao=new onlineDao();
static TextArea myshowmess;
static TextArea myonlinetext;
static Threads threads=new Threads();
int count=0;
static ObjectOutputStream dos = null;
static ObjectInputStream dis = null;
public void handle() {
Register register = new Register();
Stage stage = new Stage();
register.start(stage);
}
public void login() throws Exception {
User name=dao.get(loginname.getText());
if(name!=null) {
if(loginpw.getText().equals(name.getPassword())) {
ChatRoom ct= new ChatRoom(name);
Stage stage = new Stage();
//登录成功之后改成在线,数据库
onlineDao.updateOnline(name.getUsername(), 1);
ct.start(stage);
//关闭原有的窗口
loginbtn.getScene().getWindow().hide();
}else{
tips2.setText("Username or password is error!");
}
}else{
tips.setText("This user doesn't exist");
}
}
public void regist() throws Exception {
User name=dao.get(loginname.getText());
if(name==null) {
if(loginpw.getText().equals(loginpw2.getText())) {
dao.insert(loginname.getText(),loginpw.getText());
//刚注册的时候默认的是不在线
onlineDao.insert(loginname.getText(), 0);
registbtn.getScene().getWindow().hide();
}
else
pwtips.setText("The second pw must be same as the first!");
}
else usernametips.setText("This user has already exist!");
}
public void sendmessage() throws IOException {
String st = text.getText().trim();
User user=ChatRoom.user;//获取聊天界面的user
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowStr = sdf.format(now);// 获取现在的时间
content = "\n" +user.getUsername()+"\t"+ nowStr + "\n" +"\t"+ st;
text.setText("");
Message message=new Message(user.getUsername(), content);
dos.writeObject(message);
messageDao messageDao=new messageDao();
messageDao.insert(user.getUsername(), content);
}
@Override
public void initialize(URL location, ResourceBundle resources) {
myshowmess=showmess;
myonlinetext=onlinetext;
}
public static class Threads implements Runnable{
private boolean state=true;
private boolean flag=true;
public void run() {
while(state) {
try {
if (flag) {
FindoldMyshowmess();
flag=false;//这样只有在第一次发消息前上面的if语句才有效
}
Findonline();
Message message1 = (Message)dis.readObject();
//追加
myshowmess.appendText(message1.getMessage()+ '\n');
} catch (IOException e) {
state=false;
System.exit(0);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
//找聊天记录
private void FindoldMyshowmess(){
try {
messageDao messageDao=new messageDao();
List<Message> messageList=messageDao.getListmessage();
for (Message message : messageList) {
myshowmess.appendText( message.getMessage()+ '\n');
}
if (myshowmess.getText().equals("")) {
myshowmess.appendText("---没有历史消息奥---"+'\n');
}else{
myshowmess.appendText("---以上是历史消息---"+'\n');
}
} catch (Exception e) {
myshowmess.setText("聊天记录获取失败"+"\n");
}
}
private void Findonline(){
try {
//这样可以消除闪屏
TextArea Myonlinetext=new TextArea();
TextArea myontonlinetext=new TextArea();
List<Useronline> useronlineList=onlineDao.getUesronline();
for (Useronline useronline : useronlineList) {
if(useronline.getOnline()==1){
Myonlinetext.setText(Myonlinetext.getText() + useronline.getUsername()+"(in)"+'\n');
}else {
myontonlinetext.setText(myontonlinetext.getText()+useronline.getUsername()+"(out)"+"\n");
}
}
myonlinetext.setText(Myonlinetext.getText()+myontonlinetext.getText());
} catch (SQLException e) {
myonlinetext.setText("在线成员获取失败");
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
聊天室.zip (41个子文件)
聊天室
chatroom.sql 2KB
JavaFxchatonline
bin
images
icon.png 18KB
logo.png 147KB
Dao
userDao.class 2KB
onlineDao.class 3KB
messageDao.class 3KB
model
Useronline.class 801B
User.class 946B
Message.class 963B
Server
ChatServer$Client.class 3KB
ChatServer.class 2KB
application
ChatRoom.class 3KB
Controller$Threads.class 3KB
Register.class 1KB
ChatRoom$1.class 1KB
Login.class 2KB
Controller.class 5KB
FXML
login.fxml 2KB
regist.fxml 2KB
chatroom.fxml 1KB
mysql-connector-java-5.1.7-bin.jar 693KB
build.fxbuild 315B
.settings
org.eclipse.jdt.core.prefs 598B
src
images
icon.png 18KB
logo.png 147KB
Dao
userDao.java 1KB
onlineDao.java 2KB
messageDao.java 2KB
model
User.java 707B
Useronline.java 497B
Message.java 690B
Server
ChatServer.java 3KB
application
Login.java 764B
ChatRoom.java 2KB
Controller.java 6KB
Register.java 697B
FXML
login.fxml 2KB
regist.fxml 2KB
chatroom.fxml 1KB
.project 580B
.classpath 457B
共 41 条
- 1
资源评论
- SS00o002020-11-19这个可以进行多用户同时登录吗?
我是一个点
- 粉丝: 88
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功