這是從另一個論壇的代碼修改的,原來有很多錯誤,我已經修改,供大家欣賞!
這中間還用到了設計模式中的代理模式,還有一些jframe入門的東西
1 客戶端
public class javaClient extends JFrame implements ActionListener//以JFrame為基類,實現ActionListener接口
{
JButton sendButton; //"發送"按鈕
JTextField inputField; // 輸入框
JTextArea outputArea; // 服務器返回框
static ClientAgent ca;
public JavaClient() //在建構函數中完成圖形界面的初始化
{
inputField=new JTextField("這里輸入..."); //供客戶端輸入的文本框
outputArea=new JTextArea("服務器返回"); //顯示服務器返回數據的文本域
sendButton=new JButton("發送");
JPanel panel=new JPanel(); //新建面板
panel.setLayout(new BorderLayout()); //設置面板風格為BorderLayout
panel.add(inputField,BorderLayout.NORTH); //放置控件
panel.add(outputArea,BorderLayout.CENTER);
panel.add(sendButton,BorderLayout.PAGE_END);
sendButton.addActionListener(this);
setTitle("Java通訊客戶端");
setContentPane(panel);
}
public static void main(String[] args)
{
JavaClient frame=new JavaClient();
frame.pack();//注重javaClient是JFrame的派生類,調用基類方法
frame.setVisible(true);
ca=new ClientAgent("127.0.0.1",1001); //傳遞服務器名稱和端口號
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==sendButton) //判定事件源控件是否是"發送"按鈕
{
try
{
ca.sendRequest(inputField.getText()); //發送文本框中的文本
System.out. }catch(Exception ex)
{
ex.printStackTrace();
}
outputArea.append("/n"+ca.getResponse()); //接收服務器回應并寫入文本域
}
}
}
新聞熱點
疑難解答