gpt4 book ai didi

java - 将用户添加到聊天室 GUI 中的 JList

转载 作者:行者123 更新时间:2023-12-01 12:07:15 25 4
gpt4 key购买 nike

我正在尝试使用java编写一个简单的聊天室GUI,包括一个Jlist来显示在线用户。首先,用户选择一个显示名称,以便该名称将显示在 JList 中。这是代码:

(问题仅出现在 createServer() 方法内部,该方法将 Name 作为参数发送给处理程序构造函数,以便将其显示在 JList 中!)

public class GUI{
private JFrame frame;
private JButton btnSend, btnConnect;
private JTextArea txtChat;
private JTextField fldText, fldName;
private JList clientList;
private DefaultListModel listModel;
private JScrollPane sc, scClients;
private JPanel jpS2All, jpS2Client, jpS2Text;
private String Name;

class handler implements ActionListener, MouseListener{
private String Name = null;

void handler(String Name) {
this.Name = Name;

}

@Override
public void actionPerformed(ActionEvent e) {
chatroom();
}

@Override
public void mouseClicked(MouseEvent e) {
fldName.setText("");
listModel.addElement(Name);
}
}

public void creatServer() {
frame = new JFrame("login");
frame.setBounds(50, 50, 300, 200);
btnConnect = new JButton("connect");
frame.add(btnConnect, BorderLayout.EAST);
fldName = new JTextField("enter your name");
fldName.addMouseListener(new handler());
Name = fldName.getText();
btnConnect.addActionListener(new handler(Name));
frame.add(fldName, BorderLayout.CENTER);

frame.setVisible(true);
}


public void chatroom() {
frame = new JFrame("online friends");
frame.setBounds(100, 100, 400, 400);
jpS2All = new JPanel();
txtChat = new JTextArea();
txtChat.setRows(25);
txtChat.setColumns(25);
txtChat.setEditable(false);
sc = new JScrollPane(txtChat);
jpS2All.add(sc);
frame.add(jpS2All, BorderLayout.WEST);


////////////////////////
jpS2Text = new JPanel();
fldText = new JTextField();
fldText.setColumns(34);
fldText.setHorizontalAlignment(JTextField.RIGHT);

jpS2Text.add(fldText);
frame.add(jpS2Text, BorderLayout.SOUTH);

/////////
jpS2Client = new JPanel();

listModel = new DefaultListModel();
clientList = new JList(listModel);
clientList.setFixedCellHeight(14);
clientList.setFixedCellWidth(100);
scClients = new JScrollPane(clientList);

frame.add(jpS2Client.add(scClients), BorderLayout.EAST);
/////////
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();

}

}

最后在主方法中:

public class Chat {

public static void main(String[] args) {
GUI gui = new GUI();
gui.creatServer();


}

}

最佳答案

这个:

void handler(String Name) {
...

应该是

handler(String Name)  {
...

成为构造函数,而不是方法。此外,您还创建了一个具有两个不同参数列表的处理程序:空参数列表和字符串。两者都需要一个构造函数。

顺便说一句,如果代码使用通常的 java 命名约定,那么代码将会容易容易理解。现在它们在几个地方颠倒了。此外,MouseListener 还有更多需要实现的方法 - 考虑扩展 MouseAdapter 。最后,您应该仅在 event dispatch thread 中创建和访问 swing 组件。 .

关于java - 将用户添加到聊天室 GUI 中的 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27500453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com