일단..이 전단계에서 서버연결 둘다 잘됩니다.
단순히 텍스트필드에서 내용입력하고 엔터 치면 서로 상호간에 잘 주고받기 하게끔 햇는데..
public class Server extends JFrame implements ActionListener {
액션리니어 추가햇는데도 @오버라이드가 생성이 안되서 그냥 직접적엇는데..
일단은 됩니다!;;
근데 문제는
문제내준걸보니 전송버튼눌러서도 나가게끔 해야하더라구요...;;;
암튼;;
이상태에서 라벨이랑 전송버튼을 추가해서
이전단계같이 채팅내용주고받기 하려고하는데 ..ㅠㅠㅠ
버튼이랑 라벨 추가하고..나서
밑에 매소드를 어케적어야할지 막막합니다.
그냥 텍스트 필드에서 엔터눌러 처리하는걸로한건뎅..
버튼전송을 눌러 엔터누른것과 같게하려면..
이걸 다 뜯어야할거같고
방법이 없을까요..
package Chat;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.JFrame;
public class Server extends JFrame implements ActionListener {
String name = "";
Panel p = new Panel();
TextArea ta = new TextArea();
TextField tf = new TextField(18);
FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
Label lb = new Label("메시지 입력 :");
Button bt = new Button("전송 ");
DataInputStream in;
DataOutputStream out;
Server(String name){
super(name);
this.name=name;
p.setLayout(new BorderLayout());
p.add("Center",ta);
p.setLayout(fl);
p.add(lb);
p.add("South",tf);
p.add("South",bt);
tf.addActionListener(this);
tf.addFocusListener(new FocusAdapter()
{
public void focusGained(FocusEvent fe)
{
tf.requestFocus();
}
});
ta.setEditable(false);
this.add(p);
this.setBounds(200,200,300,300);
this.setResizable(false);
this.setVisible(true);
tf.requestFocus();
serverStart();
}
public void actionPerformed(ActionEvent e) { // 여기가.....원래@Override 표시가 나와야하는데 안나와서직접씀
String msg = tf.getText();
if("".equals(msg))
return;
if(out!=null) {
try{
out.writeUTF(name+">"+msg); //서버나 클라이언트 매소드
}
catch(IOException e1) {
e1.printStackTrace();
}
}
ta.append("\n"+name + " > "+msg);
tf.setText("");
}
public void serverStart() { //서버 시작
try{
ServerSocket ss = new ServerSocket(7777); //1234
ta.setText("서버오픈\n");
Socket socket = ss.accept();
ta.append(" 연결되었습니다.\n");
in=new DataInputStream(socket.getInputStream());
out=new DataOutputStream(socket.getOutputStream());
while(in!=null) {
String msg = in.readUTF();
ta.append("\n"+msg);
}
}catch(IOException e) {
ta.setText("서버 설정 실패\n");
}
}
public static void main(String[] args) {
Server server= new Server("Server"); //타이틀
}
}