public void actionPerformed(ActionEvent e) { JButton curr = (JButton) e.getSource(); if(curr == enter){ username = nameText.getText(); if(userClientService.checkUser(username)){ enter.setEnabled(false); exit.setEnabled(true); ipText.setEditable(false); nameText.setEditable(false); portText.setEditable(false); } } else if(curr == send){ String str = message.getText(); messageService.sendMsg(str,username); message.setText(""); } else if(curr == exit){ userClientService.exit(username); System.exit(0); } }
时间: 2024-02-14 14:21:48 浏览: 94
这段代码是一个事件处理方法,用于处理用户的登录、退出和消息发送等操作。它首先获取事件源(即用户点击的按钮),然后根据不同的按钮执行不同的操作。
如果用户点击的是“登录”按钮(enter),则获取用户名(nameText.getText()),并调用 userClientService.checkUser(username) 方法来检查用户名是否可用。如果用户名可用,则将“登录”按钮设置为不可用,将“退出”按钮设置为可用,并将 IP 地址、用户名和端口号文本框设置为不可编辑。
如果用户点击的是“发送”按钮(send),则获取消息输入框中的文本内容(message.getText()),并调用 messageService.sendMsg(str,username) 方法来发送消息。然后将消息输入框清空,等待用户输入下一条消息。
如果用户点击的是“退出”按钮(exit),则调用 userClientService.exit(username) 方法来退出聊天室,并关闭客户端程序。
相关问题
这段代码中,为什么点击了buttonsubmit按钮,无法跳转到TestFrame中设置的窗口, @Override public void actionPerformed(ActionEvent e) { JButton jbLogin = (JButton) e.getSource(); // 向下转型 if (jbLogin.equals(buttonsubmit)) { // 自己增加界面跳转的界面 String id_login=j_username.getText(); String pws_login =new String(j_userpsw.getPassword()); //进行登录事件的处理 UserService us=new UserService(); User user= us.loginUI(id_login, pws_login); //判断用户是否正确75 if (user!=null) { this.dispose();//登录成功后进入菜单页面 JOptionPane.showMessageDialog(null, "登录成功!"); new TestFrame1(user).setVisible(true); } else { JOptionPane.showMessageDialog(null, "用户名密码错误!"); } } }
这段代码中,点击buttonsubmit按钮无法跳转到TestFrame中设置的窗口的原因可能是TestFrame1类的setVisible方法没有被正确调用。在这段代码中,如果用户登录成功,应该先关闭当前登录窗口,再打开TestFrame1窗口,但是这段代码中只调用了dispose方法关闭了当前窗口,没有调用TestFrame1的setVisible方法打开新窗口。建议在dispose方法后加上TestFrame1的setVisible方法,这样就可以正常跳转到设置的窗口了。
package my; import javax.swing.*; import java.awt.event.*; public class ButtonClickEvent extends JFrame{ JButton btn; public static void main(String[] args) { // TODO Auto-generated method stub ButtonClickEvent frame=new ButtonClickEvent(); } public ButtonClickEvent() { super("Window Title"); btn=new JButton("Click here"); getContentPane().add("Center",btn); ButtonListener listen=new ButtonListener(); btn.addActionListener(listen); setSize(200,300); setVisible(true); } class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e) { JButton source=(JButton)e.getSource(); source.setText("Button clicked"); } } }如何改为两个命令按钮
您可以将原来的按钮代码复制并稍作修改来创建第二个按钮,然后将它们分别添加到 JFrame 的内容面板中。修改后的代码如下:
```java
package my;
import javax.swing.*;
import java.awt.event.*;
public class ButtonClickEvent extends JFrame{
JButton btn1, btn2;
public static void main(String[] args) {
ButtonClickEvent frame=new ButtonClickEvent();
}
public ButtonClickEvent() {
super("Window Title");
btn1=new JButton("Click here");
getContentPane().add("Center",btn1);
ButtonListener listen1=new ButtonListener();
btn1.addActionListener(listen1);
btn2=new JButton("Or click here");
getContentPane().add("South",btn2); // 添加到南侧
ButtonListener listen2=new ButtonListener();
btn2.addActionListener(listen2);
setSize(200,300);
setVisible(true);
}
class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton source=(JButton)e.getSource();
source.setText("Button clicked");
}
}
}
```
这个示例代码中,我们在 JFrame 的内容面板中添加了两个按钮,分别是 `btn1` 和 `btn2`。它们分别添加在中心和南侧位置,以便能够在界面上区分它们的位置。同时,我们创建了两个相同的按钮监听器 `ButtonListener` 用于监听这两个按钮的点击事件。
阅读全文