gpt4 book ai didi

java - 从 Swing 按钮 ActionPerformed 访问 DatagramSocket 对象

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

我正在使用 swing jFrame 为我的客户端-服务器预订系统创建 GUI。我在客户端遇到了问题,我想使用在此声明的 DatagramSocket:

public BookingClientUI() throws SocketException {
DatagramSocket clientSocket = new DatagramSocket(9876);
initComponents();
RecvPacket recvProcess = new RecvPacket(clientSocket);
Thread recvThread = new Thread(recvProcess);
recvThread.start();
}

稍后在此按钮中执行操作:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
try {
String passwordString = new String(passwordfield.getPassword());
byte[] passwordBytes = passwordString.getBytes();
byte[] packetData = new byte[1500];
packetData = SendPacketHandler.packetConstructor(SendOpcodes.REGISTER_USER,usernamefield.getText(),EncryptionHandler.hashPassword(passwordBytes));
DatagramPacket packet = new DatagramPacket(packetData,packetData.length,InetAddress.getByName("127.0.0.1"),9876);
clientSocket.send(packet);
} catch (NoSuchAlgorithmException | UnknownHostException | IOException ex) {
Logger.getLogger(BookingClientUI.class.getName()).log(Level.SEVERE, null, ex);
}

}

显然,这一行:

        clientSocket.send(packet);

出现“找不到符号”错误,因为声明的 DatagramSocket 不在范围内。但是我不知道如何解决这个问题,因为我只用 Java 编程了几天。

如有任何帮助,我们将不胜感激。

最佳答案

您只需将套接字存储到类的数据成员中,稍后按钮处理程序就可以访问该数据成员。您还没有对您的类层次结构进行足够的解释,无法说明如何做到这一点。如果按钮处理程序位于 BookingClientUI 内部,则很简单。你会得到类似的东西:

public BookingClientUI() extends JFrame {

final DatagramSocket clientSocket;

public BookingClientUI() throws SocketException {
// Initialize the data member with the open socket.
clientSocket = new DatagramSocket(9876);
initComponents();
RecvPacket recvProcess = new RecvPacket(clientSocket);
Thread recvThread = new Thread(recvProcess);
recvThread.start();
}

// Any member function can now use clientSocket, including a button action.

}

在这一切中,不要忘记(几乎)所有 Swing 代码都必须在 UI 线程中运行。

关于java - 从 Swing 按钮 ActionPerformed 访问 DatagramSocket 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721492/

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