JSWING小工具

时间:2023-03-08 20:10:02

项目中需要一个发送指令到指定服务端,取得设备ID及检测数据的小工具,就利用jswing开发了一个简单小组件,最终效果如下:

JSWING小工具

代码很简单,具体片段如下:

Window.java

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants; /**
* @author
* @todo 主窗体
*/
@SuppressWarnings("serial")
public class Window extends JFrame {
public Window() {
super("工具");
setSize(500, 300);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
add(new Panels().set());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
} } class Panels {
public JPanel set() {
// 设置面板
JPanel panels = new JPanel();// 外层面板
JPanel panel1 = new JPanel();// 端口指令面板
JPanel panel2 = new JPanel();// 操作按钮面板
JPanel panel3 = new JPanel();// 返回结果面板
// 设置下拉
// 设置文本
JLabel label = new JLabel();// 指令
JLabel label2 = new JLabel();// 结果 // 端口
final JComboBox combox = new JComboBox(new Integer[] { 30003, 30005,
30006, 30008 });
// 设置指令框
final JTextField text = new JTextField();
// 设置文本域
final JTextArea textarea = new JTextArea();
// 设置按钮
JButton button = new JButton("测试");
JButton button2 = new JButton("清空");
JScrollPane scrollpane = new JScrollPane(textarea);
scrollpane.setBorder(javax.swing.BorderFactory
.createLineBorder(Color.GRAY));//设置边框颜色 combox.setPreferredSize(new Dimension(80, 20));//设置下拉长宽 label.setText("指令:");
text.setColumns(27);
text.setBorder(javax.swing.BorderFactory.createLineBorder(Color.GRAY)); textarea.setEditable(false);
textarea.setRows(9);
textarea.setColumns(35);
label2.setText("结果:"); button.setHorizontalTextPosition(SwingConstants.CENTER);//设置横向位置
button2.setHorizontalTextPosition(SwingConstants.CENTER);//设置横向位置
// 设置按钮事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent args) {
String textval = text.getText();
Integer port = Integer.valueOf(combox.getSelectedItem()
.toString());
if ("".equals(textval.trim())) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(null, "请输入指令!", null,
JOptionPane.WARNING_MESSAGE);
return;
}
textarea.append("请求:" + textval + "\n");
textarea.append(new Connect().doConnection(port, textval)
+ "\n");
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent args) {
textarea.setText("");
}
});
// 添加至面板
panel1.add(label);
panel1.add(combox);
panel1.add(text);
panel2.add(button);
panel2.add(button2);
panel3.add(label2); scrollpane
.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);//设置文本域不显示横向滚动条
panel3.add(scrollpane);
panels.add(panel1);
panels.add(panel2);
panels.add(panel3);
return panels;
}
}

Connect.java

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException; /**
* @author
* @todo 发送指令 获取设备信息及数据
*/
public class Connect {
public String doConnection(int port, String command) {
String result;
ServerSocket server = null;
Socket socket = null;
try {
server = new ServerSocket(port); server.setSoTimeout(5000);
socket = server.accept(); InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream(); os.write(command.getBytes());
os.flush(); byte[] response = getResponse();
is.read(new byte[1024]);
String valuestr = new String(response);
result = "成功:" + valuestr; } catch (SocketTimeoutException e) {
result = "失败:连接超时!";
} catch (IOException e) {
result = "失败:读写异常!";
}
try {
if (socket != null) {
socket.close();
}
if (server != null) {
server.close();
}
} catch (IOException e) {
e.printStackTrace();
} return result;
} public byte[] getResponse() {
return new byte[1024];
}
}

Console.java

/**
* @author
* @todo 窗体入口
*/
public class Console { public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Window();
}
});
}
}
JSWING小工具