Frame um WindowClosing erweitern
- From: "Alberto Luca" <albertoluca66@xxxxxx>
- Date: Sun, 19 Oct 2008 19:34:57 +0200
Hallo NewsGroup,
ich möchte ein bestehendes Coding dahingehend erweitern,
dass das Schließen des Fensters (x oben rechts) ebenfalls unterstützt wird.
Wie müsste u.s. Coding erweitert werden?
package chat.sockets;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
public class Client
{
private ClientCommunicator communicator;
private String userName;
private Frame loginFrame, chatFrame;
private List userList;
private TextArea chatArea;
private TextField nameField, chatField;
private Button submitButton, logoutButton;
private void showLoginFrame() {
loginFrame = new Frame();
loginFrame.setLayout(new FlowLayout());
loginFrame.add(new Label("Name:"));
nameField = new TextField(20);
loginFrame.add(nameField);
Button loginButton = new Button("login");
loginButton.addMouseListener(new LoginListener());
loginFrame.add(loginButton);
loginFrame.pack();
loginFrame.setVisible(true);
}
private void showChatFrame() {
Panel usersPanel = new Panel();
usersPanel.setLayout(new BorderLayout());
usersPanel.add(new Label("Current users:"), BorderLayout.NORTH);
userList = new List(5, false);
usersPanel.add(userList, BorderLayout.SOUTH);
Panel chatPanel = new Panel();
chatPanel.setLayout(new BorderLayout());
chatPanel.add(new Label("Chat:"), BorderLayout.NORTH);
chatArea = new TextArea(10, 20);
chatPanel.add(chatArea, BorderLayout.SOUTH);
Panel ownPanel = new Panel();
ownPanel.setLayout(new BorderLayout());
ownPanel.add(new Label("What I want to say:"), BorderLayout.NORTH);
chatField = new TextField(20);
ownPanel.add(chatField, BorderLayout.CENTER);
Panel buttonsPanel = new Panel();
submitButton = new Button("submit");
submitButton.addMouseListener(new ChatListener());
buttonsPanel.add(submitButton);
logoutButton = new Button("logout");
logoutButton.addMouseListener(new ChatListener());
buttonsPanel.add(logoutButton);
ownPanel.add(buttonsPanel, BorderLayout.SOUTH);
chatFrame = new Frame();
chatFrame.setLayout(new BorderLayout());
chatFrame.add(usersPanel, BorderLayout.NORTH);
chatFrame.add(chatPanel, BorderLayout.CENTER);
chatFrame.add(ownPanel, BorderLayout.SOUTH);
chatFrame.pack();
chatFrame.setVisible(true);
}
private void fillUserList(Vector names) {
userList.removeAll();
for ( int i = 0; i < names.size(); i++ )
if (names.get(i).equals(userName) )
userList.add("<" + names.get(i) + ">");
else
userList.add(names.get(i) + " ");
}
public Client() {
communicator = new ClientCommunicator();
showLoginFrame();
}
public static void main(String[] args) {
new Client();
}
class LoginListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
userName = nameField.getText();
communicator.login(userName);
loginFrame.dispose();
showChatFrame();
Poller thread = new Poller();
thread.start();
}
}
class ChatListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if ( e.getSource() == submitButton ) {
communicator.tell(userName, chatField.getText());
chatField.setText("");
}
else if ( e.getSource() == logoutButton ) {
communicator.logout(userName);
}
}
}
class Poller extends Thread
{
public void run() {
boolean finished = false;
ChatEvent evt = null;
while (!finished)
{
try {
Thread.sleep(100); // Verzögern wegen CPU-Belastung
}
catch (InterruptedException e)
{ }
evt = communicator.poll(userName);
if ( evt != null ) {
switch (evt.getCommand()) {
case ChatEvent.LIST_UPDATE:
fillUserList((Vector) evt.getArg());
break;
case ChatEvent.MESSAGE:
chatArea.append((String) evt.getArg() + "\n");
break;
case ChatEvent.LOGOUT:
finished = true;
break;
}
}
}
communicator.stop();
System.exit(0);
} // run
} // Poller
} // Client
Besten Dank vorab!
Ciao, Alberto
.
- Follow-Ups:
- Re: Frame um WindowClosing erweitern
- From: Michael Paap
- Re: Frame um WindowClosing erweitern
- Prev by Date: Windows XP / AWT: Fenster / Frame wird nicht richtig angezeigt
- Next by Date: Re: Frame um WindowClosing erweitern
- Previous by thread: Windows XP / AWT: Fenster / Frame wird nicht richtig angezeigt
- Next by thread: Re: Frame um WindowClosing erweitern
- Index(es):