ZBLOG

我给你提供chatclient的代码,你只需要帮我完成添加监听器这一部分即可:public class ChatClient { private JTextArea textArea; private JTextField textField; private JButton sendButton; private JButton exitButton; public ChatClient() { textArea = new J...

下面是添加监听器的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ChatClient {

    private JTextArea textArea;
    private JTextField textField;
    private JButton sendButton;
    private JButton exitButton;

    public ChatClient() {
        textArea = new JTextArea(10, 50);
        textField = new JTextField(50);
        sendButton = new JButton("Send");
        exitButton = new JButton("Quit");
    }

    public void launchFrame() {
        Frame jf=new JFrame("Chat Room");
        JPanel bigJpanel=new JPanel();
        JScrollPane jScrollPane1=new JScrollPane();
        JPanel jp1=new JPanel();

        // 注册事件监听器
        sendButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String message = textField.getText();
                if (!message.equals("")) { // 如果消息非空,则将其追加到聊天记录中,并清空输入框
                    textArea.append(message + "\n");
                    textField.setText("");
                }
            }
        });

        exitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0); // 点击“退出”按钮时退出程序
            }
        });

         // 处理按回车键的事件,与发送按钮相同
         textField.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
                 String message = textField.getText();
                 if (!message.equals("")) { 
                     textArea.append(message + "\n");
                     textField.setText("");
                 }
             }
         });

         
        

        JPanel jp2=new JPanel();

        jp2.setLayout(new BoxLayout(jp2,BoxLayout.Y_AXIS));

        
         
         

       
         
         

        
        

       

      

       

        

        

        

       
        

      

        
         
        
       

        //设置顶部标签
        JLabel jLabel=new JLabel("Chat Room",SwingConstants.CENTER);
        jLabel.setFont(new Font("宋体", Font.PLAIN, 30));
        jLabel.setForeground(Color.WHITE);
        jLabel.setOpaque(true);
        jLabel.setBackground(Color.pink);

         
        //设置边框
        Border border = new LineBorder(Color.pink, 4, true);
        bigJpanel.setBorder(border);


        jScrollPane1.setViewportView(textArea); // 将文本区域添加到滚动面板中,以便可以滚动查看聊天记录

        

        
         
         
        
        
        
        
        
       
       

       jp1.add(textField); 
       jp2.add(sendButton);
       jp2.add(exitButton);

       bigJpanel.add(jScrollPane1); // 将滚动面板添加到主面板上
       bigJpanel.add(jp1);
       bigJpanel.add(jp2);
       bigJpanel.add(jLabel);

       
       jf.getContentPane().add(bigJpanel); 

      

       

        

      
         
         
        
        
        
        
        
        
        

        

        
         
        
         
        
        
        

        
        
       
        

        
         
            
          

         jf.pack();
         jf.setLocationRelativeTo(null); // 窗口居中显示
         jf.setVisible(true);

    }

    public static void main(String[] args) {
        ChatClient client = new ChatClient();
        client.launchFrame();
    }
}

我们为发送按钮、退出按钮和输入框分别注册了监听器:

  • 发送按钮和输入框的监听器处理方式相同,即在输入框中获取文本并将其追加到聊天记录区域中。如果输入框为空,则不执行任何操作。
  • 退出按钮的监听器点击后直接退出程序。

我们还为输入框添加了按回车键的事件处理,与发送按钮相同。

注意:在注册监听器时,需要使用匿名内部类来实现 ActionListener 接口。这是因为该接口中只有一个方法需要被实现,所以可以使用匿名内部类的方式简化代码。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=880

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?