package com.wait.nio.client.ui;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.wait.nio.client.net.NioClient;
/**
*
* @author wait
* @date 2014年12月15日 上午10:55:30
*/
public class MainUI {
public static final int PORT = 8200;
public static final int PLAYER_ID = 1;
private static MainUI mainUI;
private JFrame frame;
private JPanel panel;
/** ip */
private JTextField ipText;
/** 端口 */
private JTextField portText;
/** 连接按钮 */
private JButton connectButton;
/** 发送按钮 */
private JButton sendButton;
/** 关闭 */
private JButton closeButton;
/** 发送内容 */
private JTextField sendText;
/** 接收内容 */
private JTextField receiveText;
private NioClient nioClient;
// static methods...
public static MainUI getInstance() {
if (mainUI == null) {
mainUI = new MainUI();
}
return mainUI;
}
// swt open and run
public void open() throws IOException {
frame = new JFrame("nio-swing");
frame.setSize(520, 330);
panel = new JPanel();
panel.setLayout(new FlowLayout());
frame.add(panel);
initLeft();
initMid();
initRight();
initAddListener();
frame.setVisible(true);
}
// logic methods...
public void connSuc() {
connectButton.setEnabled(false);
sendButton.setEnabled(true);
closeButton.setEnabled(true);
}
public void startConn() {
connectButton.setEnabled(true);
sendButton.setEnabled(false);
closeButton.setEnabled(false);
nioClient = null;
}
// getter and setters...
public void setReceivedData(String data) {
receiveText.setText(data);
}
public String getSendData() {
String data = sendText.getText();
if (data == null || data.equals("")) {
data = "test";
}
data = data.trim();
return data;
}
// private methods...
private void initLeft() {
// ip
JLabel label = new JLabel();
label.setText("ip:");
ipText = new JTextField(15);
ipText.setText("127.0.0.1");
panel.add(label);
panel.add(ipText);
// port
label = new JLabel();
label.setText("port:");
portText = new JTextField();
portText.setText(String.valueOf(NioClient.PORT));
panel.add(label);
panel.add(portText);
// conn
connectButton = new JButton();
connectButton.setText("conn");
panel.add(connectButton);
// send button
sendButton = new JButton();
sendButton.setText("send");
sendButton.setEnabled(false);
panel.add(sendButton);
// close
closeButton = new JButton();
closeButton.setText("close");
closeButton.setEnabled(false);
panel.add(closeButton);
}
private void initMid() {
JLabel label = new JLabel();
label.setText("send");
sendText = new JTextField(15);
panel.add(label);
panel.add(sendText);
}
private void initRight() {
JLabel label = new JLabel();
label.setText("received");
receiveText = new JTextField(15);
panel.add(label);
panel.add(receiveText);
}
private void initAddListener() {
connectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (nioClient == null) {
try {
int port = Integer.parseInt(portText.getText());
nioClient = new NioClient(port, mainUI);
new Thread(nioClient).start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
sendButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
sendMsg();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
closeConn();
}
});
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
if (nioClient != null) {
nioClient.close();
}
System.exit(0);
}
});
}
private void sendMsg() throws IOException {
String data = sendText.getText();
if (data == null || data.equals("")) {
return;
}
nioClient.send();
}
private void closeConn() {
nioClient.close();
}
}
x_fuyun
- 粉丝: 4
- 资源: 8
最新资源
- pdf文件在浏览器在线浏览,非下载保存 <a href="/pdf/web/viewer.html?file=xx.pdf">
- 逆向练习(三)ajj.1
- 魔兽世界怀旧服(WA监控插件)WeakAuras2024.10.12.rar
- happybirthday2 升级版生日祝福密码0528.zip
- YOLOv10:无需NMS的端到端目标检测革命
- 2215408001杨振宇数据结构作业3.py
- mysql8.4.2版本的zip解压缩版安装
- 南开大学工科大学基础物理实验报告高分报告.zip
- ISO 16750-4 2023 (中文翻译+英文原版).zip
- ME70P04-VB一款P-Channel沟道TO252的MOSFET晶体管参数介绍与应用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈