📄 tradepanel.java
字号:
package boco.webtrade;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.TitledBorder;import java.io.*;import java.net.*;import java.sql.*;import java.util.Vector;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author qf * @version 1.0 */public class TradePanel extends JFrame { JPanel contentPane; //设置签到、签退、检查线路和发送文字信息面板 JPanel signpanel =new JPanel(); JPanel sendpanel =new JPanel(); //the input stream from the socket protected DataInputStream inStream; protected ReadCallback readCallback; protected Socket sock; protected ServerSocket listenSock; //捕获到的异常 String exceptionstr = ""; //发送的报文 String tradestr = ""; String comstr = ""; //主机名和端口号 String hostName = ""; int portNumber = 0; String sTradeCode = ""; String sComCode = ""; String sComName = ""; Vector vComCode = new Vector(); Vector vComName = new Vector(); Vector vTradeComCode = new Vector(); //存储业务类别的下拉框 private JComboBox typeComboBox = new JComboBox(); //签到、签退、检查线路、发送文字信息按钮和发送文字信息的窗格 private JButton excutebutton = new JButton(); private JTextPane sendtextpane = new JTextPane(); //初始化中文转换为ASCII码和ASCII码转换为中文的函数 ChineseTransfer atoc = new ChineseTransfer(); //存放从数据库中取出的业务类别的主机名和端口号 TradeTable tt=new TradeTable(); String TradeName=""; public TradePanel() { try { jbInit(); } catch(Exception ex) { ex.printStackTrace(); } } void jbInit() throws Exception { //得到所有的数据库的表 tt.getAllTableRecord(); Vector vTradeName = new Vector(); vTradeName=tt.getAllTradeName(); tt.getComNameAndCode(); vComCode = tt.getAllNewComCode(); vComName = tt.getAllComName(); //UI container contentPane = (JPanel)this.getContentPane(); contentPane.setLayout(null); this.setSize(new Dimension(424, 227)); this.setTitle("发起交易"); signpanel = new JPanel(); signpanel.setLayout(null); signpanel.setBorder(new TitledBorder(" 交 易 ")); signpanel.setBounds(new Rectangle(4, 7, 413, 61)); sendpanel = new JPanel(); sendpanel.setLayout(new BoxLayout(sendpanel, BoxLayout.X_AXIS)); sendpanel.setBorder(new TitledBorder("文字信息")); sendpanel.setBounds(new Rectangle(4, 75, 413, 112)); typeComboBox.setPreferredSize(new Dimension(150, 27)); typeComboBox.setToolTipText("选择业务类别"); typeComboBox.addItem("请选择业务类别"); typeComboBox.setBounds(new Rectangle(7, 21, 150, 27)); for(int i=0;i<vTradeName.size();i++) typeComboBox.addItem(atoc.AsciiToChineseString(vTradeName.elementAt(i).toString())); typeComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent ae){ typeComboBox_actionPerformed(ae); } }); JComboBox CmdComboBox = new JComboBox(); CmdComboBox.addItem("请选择命令类型"); CmdComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent ae){ CmdComboBox_actionPerformed(ae); } }); CmdComboBox.setVisible(true); CmdComboBox.setToolTipText("选择命令"); CmdComboBox.setPreferredSize(new Dimension(150, 27)); CmdComboBox.setBounds(new Rectangle(160,21,150,27)); signpanel.add(CmdComboBox, null); excutebutton.setBounds(new Rectangle(320, 21, 85, 27)); excutebutton.setToolTipText("发送"); excutebutton.setText("执行命令"); excutebutton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent ae) { excutebutton_actionPerformed(ae); } }); sendtextpane.setMaximumSize(new Dimension(300, 80)); sendtextpane.setMinimumSize(new Dimension(300, 80)); sendtextpane.setPreferredSize(new Dimension(300, 80)); sendtextpane.setText("That has been initialized with the setText method"); JScrollPane areaScrollPane = new JScrollPane(sendtextpane); areaScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); //JViewport jvp = areaScrollPane.getViewport(); //jvp.add(sendtextpane); //areaScrollPane.setViewportView(sendtextpane); //signpanel.add(CmdComboBox, null); signpanel.add(typeComboBox, null); signpanel.add(excutebutton, null); contentPane.add(sendpanel, null); sendpanel.add(areaScrollPane, null); contentPane.add(signpanel, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } //第一个下拉框响应事件 public void typeComboBox_actionPerformed(ActionEvent ae) { JComboBox cb = (JComboBox)ae.getSource(); TradeName = (String)cb.getSelectedItem(); tt.getInfo(TradeName); //取得交易类型对应的地址、端口号、命令编码、交易编码 hostName = tt.getCorrespondTradeHost(); portNumber = Integer.parseInt(tt.getCorrespondTradePort()); sTradeCode = tt.getCorrespondTradeCode().trim(); tradestr = sTradeCode; vTradeComCode = tt.getAllTradeComCode(); String sComCode = "";/** * 在获得新的业务类型对应的命令下拉框之前清空在Panel中的所有部件, * 然后再添加业务类型下拉框和执行命令按钮,并重新构建一个命令下拉框。 */ signpanel.removeAll(); signpanel.add(typeComboBox); signpanel.add(excutebutton); JComboBox CmdComboBox = new JComboBox(); CmdComboBox.addItem("请选择命令类型"); CmdComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent ae){ CmdComboBox_actionPerformed(ae); } }); CmdComboBox.setVisible(true); CmdComboBox.setToolTipText("选择命令"); CmdComboBox.setPreferredSize(new Dimension(150, 27)); CmdComboBox.setBounds(new Rectangle(160,21,150,27)); signpanel.add(CmdComboBox, null); //获得命令编码向量的对应命令名 for(int i=0;i < vTradeComCode.size();i++){ sComCode = vTradeComCode.elementAt(i).toString(); for(int j=0;j < vComCode.size();j++){ if(sComCode.equals(vComCode.elementAt(j).toString())) CmdComboBox.addItem(vComName.elementAt(j).toString()); } } vTradeComCode.removeAllElements(); //:test: System.out.println(hostName); //:test: System.out.println(portNumber); } //命令下拉框选择项目时响应事件 public void CmdComboBox_actionPerformed(ActionEvent ae) { JComboBox cb = (JComboBox)ae.getSource(); Object Item = cb.getSelectedItem(); if(Item!=null){ sComName = (String)cb.getSelectedItem(); String comcode = ""; for(int i = 0;i < vComCode.size();i++){ if(sComName.equals(vComName.elementAt(i).toString())) comcode = vComCode.elementAt(i).toString().trim(); } comstr = comcode; } //:test:System.out.println(tradestr+comstr); } //执行命令按钮响应事件 public void excutebutton_actionPerformed(ActionEvent ae) { try{ SimpleClient client = new SimpleClient(hostName,portNumber); client.start(); client.sendString(tradestr+comstr+sendtextpane.getText()); client.clientThread.sleep(1000); String rec=client.reader.recvstr; if(!rec.equals("")){ JOptionPane.showMessageDialog(contentPane,rec,"执行命令返回提示",JOptionPane.INFORMATION_MESSAGE); client.disconnect(); } else { JOptionPane.showMessageDialog(contentPane,"执行命令失败","执行命令返回提示",JOptionPane.ERROR_MESSAGE); client.disconnect(); return; } client.disconnect(); client.stop(); } catch(NullPointerException npe){ JOptionPane.showMessageDialog(contentPane,npe.toString(),"服务器未在该端口侦听或者不存在该服务器",JOptionPane.WARNING_MESSAGE); } catch (ConnectException ce){ // Tell the callback there was an error //readCallback.dataReady(null); ce.printStackTrace(); exceptionstr=ce.toString(); JOptionPane.showMessageDialog(contentPane,exceptionstr,"执行命令发生socket连接错误",JOptionPane.WARNING_MESSAGE); } catch(InterruptedException ie){ ie.printStackTrace(); exceptionstr=ie.toString(); JOptionPane.showMessageDialog(contentPane,exceptionstr,"执行命令时线程出错",JOptionPane.ERROR_MESSAGE); } catch(IOException ioe){ ioe.printStackTrace(); exceptionstr=ioe.toString(); JOptionPane.showMessageDialog(contentPane,exceptionstr,"执行命令时发生IO错误",JOptionPane.WARNING_MESSAGE); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -