1
所以我在eclipse上使用WindowBuilder來設計我的GUI。這樣做後,我試着測試它是否正確彈出,但由於某種原因,應用程序在運行後幾乎立即關閉。應用程序在打開後立即關閉
這裏是我的代碼:
public class ServerFrame extends JFrame {
private JTextField ServerAddressField;
private JTextField PortNumberField;
private server ChatServer;
private InetAddress ServerAddress ;
private JTextArea ChatBox;
private JTextArea ClientTextArea;
private JTextArea UserText;
private JButton Start, Send;
/**
* Create the application.
*/
/**
* Initialize the contents of the frame.
*/
public ServerFrame() {
setTitle("Server");
setSize(700,700);
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.setVisible(true);
ChatBox = new JTextArea();
ChatBox.setBounds(20, 30, 497, 259);
cp.add(ChatBox);
ClientTextArea = new JTextArea();
ClientTextArea.setBounds(549, 30, 128, 259);
cp.add(ClientTextArea);
UserText = new JTextArea();
UserText.setBounds(20, 317, 497, 57);
cp.add(UserText);
ServerAddressField = new JTextField();
ServerAddressField.setBounds(107, 414, 130, 26);
cp.add(ServerAddressField);
ServerAddressField.setColumns(10);
JLabel lblNewLabel = new JLabel("Server Address:");
lblNewLabel.setBounds(6, 417, 110, 21);
cp.add(lblNewLabel);
PortNumberField = new JTextField();
PortNumberField.setBounds(342, 414, 130, 26);
cp.add(PortNumberField);
PortNumberField.setColumns(10);
JLabel lblPortNumber = new JLabel("Port Number:");
lblPortNumber.setBounds(249, 417, 116, 21);
cp.add(lblPortNumber);
Start = new JButton("Connect");
Start.setBounds(482, 414, 117, 29);
cp.add(Start);
Send = new JButton("Send");
Send.setBounds(529, 332, 117, 29);
cp.add(Send);
JLabel lblChatHistory = new JLabel("Chat History");
lblChatHistory.setBounds(231, 6, 92, 16);
cp.add(lblChatHistory);
JLabel lblClientList = new JLabel("Client List");
lblClientList.setBounds(579, 8, 75, 12);
cp.add(lblClientList);
Start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ChatServer=new server();
ChatServer.start();
}
});
Send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// ChatServer.SendMassage(ServerAddress.getHostName()+" <Server> "+UserText.getText());
UserText.setText("");
}
});
UserText.addKeyListener(new KeyListener(){
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
e.consume();
Send.doClick();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
});
}
public static void main(String[] args) {
// TODO code application logic here
new ServerFrame();
}
任何幫助,將不勝感激。非常感謝你!
編輯:對不起,當我刷新頁面時,我只看到您的回覆中的第一段。我現在用你的建議修復我的代碼,看看它是否能解決問題,謝謝。 – Calvin
請看我編輯的評論,這是我的錯誤,對不起! – Calvin
@Calvin:好的,請回到我這裏。此外,您正在使用FlowLayout,這是一種不尊重組件「界限」的佈局。再次,我敦促您瞭解並使用佈局管理器。它會讓你的代碼更容易調試。 –