1. fdsa란 패키지 안에 game.java파일과 Messenger.java파일이 있습니다. Messenger의 MyFrame 클래스에서 버튼을 눌렀을 때 game.java가 실행되려면 어떻게 해야하나요?
2. 프로그램을 실행할 때 이름을 입력하는 JOptionPane 창이 나오고 process 클래스와 actionPerformed 클래스에서 Myname과 Yourname 변수를 만들어서 채팅을 전송할 때 서로의 이름도 전송시키고 싶은데 어떻게 하나요? 예를 들어
아래는 소스입니다.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MessengerA {
protected JTextField textField;
protected JTextArea textArea;
DatagramSocket socket;
DatagramPacket packet;
InetAddress address = null;
final int myPort = 5000;
final int otherPort = 6000;
protected String Myname="";
protected String Yourname="";
public MessengerA() throws IOException {
MyFrame f = new MyFrame();
address = InetAddress.getByName("127.1.0.150");
socket = new DatagramSocket(myPort);
}
public void process() {
while(true) {
try
{
byte[] buf=new byte[256];
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
textArea.append(Yourname+": "+ new String(buf)+"\n");
}
catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
class MyFrame extends JFrame implements ActionListener {
public MyFrame() {
super("MessengerA");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textField = new JTextField(20);
textField.addActionListener(this);
textArea=new JTextArea(30,10);
JScrollPane s = new JScrollPane(textArea);
JButton b = new JButton("게임 시작");
b.setRolloverEnabled(true);
b.addActionListener(new GameStart());
Myname = JOptionPane.showInputDialog("이릅을 입력하세요");
textArea.setEditable(false);
add(textField, BorderLayout.PAGE_END);
add(s, BorderLayout.CENTER);
add(b,BorderLayout.PAGE_START);
pack();
setSize(300,400);
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
String s =textField.getText();
byte[] buffer = s.getBytes();
DatagramPacket packet;
packet = new DatagramPacket(buffer, buffer.length,address,otherPort);
try {
socket.send(packet);
} catch (IOException e ) {
e.printStackTrace();
}
textArea.append(Myname+": "+s+"\n");
textField.selectAll();
textArea.setCaretPosition(textArea.getDocument().getLength());
}
class GameStart implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
b.setText("게임이 시작되었습니다!");
}
}
}
public static void main(String[] args) throws IOException{
MessengerA m = new MessengerA();
m.process();
}
}