class ClientThread extends Thread { OtherCallFrame frame ;//= new OtherCallFrame(); Socket socket; BufferedReader in = null;//声明输入流对象 // ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
public ClientThread(Socket socket) { this.socket = socket; }
public void run() {
try { in = new BufferedReader( new InputStreamReader(socket.getInputStream()));//创建输入流对象 while(true)//不断刷新直到手动结束 { String info = in.readLine().trim(); if(info != null) { System.out.println(info); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}
public void send() { Vector<Checkout> v = new Vector<Checkout>();//创建向量对象用于存储发送消息 // if(CheckoutNames != null) // v.add(CheckoutNames); // v.add
private JButton btn_submit,btn_cancel;
private JLabel lbl_CallItem;
private JCheckBox chb_Toiletries,chb_HairDryer,chb_Tableware,chb_Other;
// private JList call_list;
Checkout checkout = new Checkout();
Object[] CheckoutNames;
//通信部分
private ObjectOutputStream out;// 声明输出流对象
public OtherCallFrame()
{
initFrame();
initAction();
this.setSize(400, 150);
this.setTitle("橙子酒店呼叫客户端");
this.setIconImage(ImageUtill.getImage("images/logo/orange_16.png"));
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
} private void initFrame() {
Container container = this.getContentPane();
container.add(getLeftPanel(),BorderLayout.CENTER);
// container.add(getRightPanel(),BorderLayout.WEST);
container.add(getDownPanel(),BorderLayout.SOUTH);
}
private JPanel getLeftPanel() {
JPanel spanel = new JPanel();
spanel.setBackground(new Color(230,240,187));
GridBagLayout gbl = new GridBagLayout();
spanel.setLayout(gbl);
lbl_CallItem = new JLabel("呼叫项目:");
chb_Toiletries = new JCheckBox("洗漱用具");
chb_HairDryer = new JCheckBox("吹风机");
chb_Tableware = new JCheckBox("餐具");
chb_Other = new JCheckBox("其他");
spanel.add(lbl_CallItem,new GBC(0,0).setInset(6));
spanel.add(chb_Toiletries,new GBC(1,0).setFill(GBC.BOTH).setInset(6));
spanel.add(chb_HairDryer,new GBC(2,0).setFill(GBC.BOTH).setInset(6));
spanel.add(chb_Tableware,new GBC(1,1).setFill(GBC.BOTH).setInset(6));
spanel.add(chb_Other,new GBC(2,1).setFill(GBC.BOTH).setInset(6));
return spanel;
}
private JPanel getDownPanel() {
JPanel panel = new JPanel();
panel.setBackground(new Color(255,236,139));
GridBagLayout gbl = new GridBagLayout();
panel.setLayout(gbl);
btn_submit = new JButton("提交");
btn_submit.setBackground(new Color(230,240,187));
btn_cancel = new JButton("取消");
btn_cancel.setBackground(new Color(230,240,187));
panel.add(btn_submit,new GBC(2,0).setInset(3).setFill(GBC.BOTH).setInset(6));
panel.add(btn_cancel,new GBC(3,0).setInset(3).setFill(GBC.BOTH).setInset(6));
return panel;
} private void initAction() {
btn_submit.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e) {
itemStateChanged();
if(e.getClickCount()==1)
{
if(checkout != null)
{
send();
}
if(checkout == null)
{
return;//为空什么都不做
}
}
} });
btn_cancel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==1)
{
OtherCallFrame.this.setVisible(false);
}
} });
} /*
*此方法用于判断Checkout组件是否被选择
*/
public void itemStateChanged()
{
if(chb_Toiletries.isSelected())
{
checkout.setChb_Toiletries("洗漱用具");
System.out.println(chb_Toiletries.getText());
}
else
chb_Toiletries = null;
if(chb_HairDryer.isSelected())
{
checkout.setChb_HairDryer("吹风机");
System.out.println(chb_HairDryer.getText());
}
else
chb_HairDryer = null;
if(chb_Tableware.isSelected())
{
checkout.setChb_Tableware("餐具");
System.out.println(chb_Tableware.getText());
}
else
chb_Tableware = null;
if(chb_Other.isSelected())
{
checkout.setChb_Other("其他");
System.out.println(chb_Other.getText());
}
else
chb_Other = null;
if(chb_Toiletries == null && chb_HairDryer == null && chb_Tableware == null && chb_Other == null)
{
CheckoutNames = null;
}
}
// public Checkout itemStateChanged(Checkout chb_Tolitetries,Checkout chb_HairDryer,Checkout chb_Tableware,Checkout chb_Other){
// if(Checkout )
//
// return checkout;
// }
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
OtherCallFrame frame = new OtherCallFrame();
frame.createClientSocket();// 调用方法创建套接字对象
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
}
}
}); } public void createClientSocket() {
try {
Socket socket = new Socket("localhost", 1982);// 创建套接字对象
out = new ObjectOutputStream(socket.getOutputStream());// 创建输出流对象
new ClientThread(socket).start();// 创建并启动线程对象
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public JButton getBtn_submit() {
return btn_submit;
} public void setBtn_submit(JButton btn_submit) {
this.btn_submit = btn_submit;
}
// public void itemStateChanged(ItemEvent e) {
// //看状态是否被选则
// if (e.getStateChange() == e.SELECTED) {
// if (e.getSource() == checkout.getChb_Toiletries())
// {
// System.out.println(checkout.getChb_Toiletries().getText());
// }
// if (e.getSource() == checkout.getChb_HairDryer())
// {
// checkout.getChb_HairDryer().getText();
// }
// if(e.getSource() == checkout.getChb_Tableware())
// {
// checkout.getChb_Tableware().getText();
// }
// if(e.getSource() == checkout.getChb_Other())
// {
// checkout.getChb_Other().getText();
// }
//
// }
//
// }
class ClientThread extends Thread
{
OtherCallFrame frame ;//= new OtherCallFrame();
Socket socket;
BufferedReader in = null;//声明输入流对象
// ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
public ClientThread(Socket socket)
{
this.socket = socket;
}
public void run()
{
try {
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));//创建输入流对象
while(true)//不断刷新直到手动结束
{
String info = in.readLine().trim();
if(info != null)
{
System.out.println(info);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void send()
{
Vector<Checkout> v = new Vector<Checkout>();//创建向量对象用于存储发送消息
// if(CheckoutNames != null)
// v.add(CheckoutNames);
// v.add
try {
out.writeObject(v);
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
这里面Checkout类是一个pojo包里面的封装的全是属性的类,封装了JCheckBox组件的名称,然后想把这个类作为对象传到服务器,我就是简单的在服务器那边做了个测试,想打印出读取到的对象。可是读出来是空数组,不知道怎么改。 while (true) { //得不断的获取,直到手动结束
Vector<Checkout> v = null;
try {
v = (Vector) in.readObject();
System.out.println(v);