我环顾四周,但似乎没有任何帮助。基本上,我正在使用gui编写多线程聊天程序。用户在Login类的文本字段中输入他的名字,然后单击Login按钮,将其定向到ClientGUI类。在客户端GUI类的顶部,有一个JLabel,上面写着
“欢迎使用聊天系统(用户名)”
。因此,用户在登录类的文本字段中输入的内容应该在“欢迎使用ChatSystem”之后显示在JLabel中,但是我不知道为什么它不起作用。这是我的代码:
登录类别:
loginB = new JButton("Login");
main.add(loginB);
loginB.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
ClientGUI clientgui = new ClientGUI();
clientgui.setVisible(true);
}
}
ClientGUI类:
public ClientGUI(){
Login login = new Login();
String username = login.usernameTF.getText();
welcome = new JLabel("Welcome to ChatSystem "+username, SwingConstants.CENTER);
}
我知道用户名实际上应该由JLabel而不是字符串提供,但是我尝试了许多方法来执行此操作,但我似乎无法解决这个问题。
最佳答案
那是行不通的,因为login.usernameTF.getText();
实际上是ClientGUI构造函数中新创建的对象...
我建议做的是重载构造函数并将名称作为参数传递...
例:
loginB.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
ClientGUI clientgui = new ClientGUI(getTheNameAndpassItHere);
clientgui.setVisible(true);
}
}
然后是ClientGUI类:
public ClientGUI(String username){
//Login login = new Login();
// String username = login.usernameTF.getText();
welcome = new JLabel("Welcome to ChatSystem "+username, SwingConstants.CENTER);
}