我一直在为我的主要项目做套接字编程。所以在阅读了很多这里和其他博客之后,我设法制作了一个 TableView。但问题是我对 TableView 的 api 不太熟悉,所以这对我来说有点问题。
public class Server implements Runnable {
ServerSocket sersock;
Socket sock;
@Override
public void run() {
try {
sersock = new ServerSocket(9000);
while (true) {
sock = sersock.accept();
new Thread(new client_handler(sock)).start();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public class client_handler implements Runnable { //Inner class.
Socket sock;
DataInputStream dis;
DataOutputStream dos;
String ip;
public client_handler(Socket sock) {
this.sock = sock;
}
public client_handler(String ip) {
this.ip = ip;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
@Override
public void run() {
try {
dis = new DataInputStream(sock.getInputStream());
dos = new DataOutputStream(sock.getOutputStream());
ip = sock.getInetAddress().getHostAddress();
System.out.println(ip);
al.add(this);
data.add(this);
} catch (Exception e) {
data.remove(this);
}
}
}
}
这是初始化的一部分
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
iptracker.setCellValueFactory(new PropertyValueFactory<>("ip"));
data = FXCollections.observableArrayList();
tableView.setItems(data);
}
这是我的宣言
@FXML
private TableView<Server.client_handler> tableView;
@FXML
private TableColumn iptracker;
ObservableList<Server.client_handler> data;
现在我想要的是,如果建立了连接(当然会),
client_handler
将sock
作为参数调用。现在我想将此袜子作为 IP 地址添加到我的 TableView 中。但我不知道该怎么做。?此外,当连接从另一端断开时,
我如何删除对象,就像我试图做的那样,但没有运气。!
稍后我想通过流将整个列表发送到其他客户端。那么如何遍历我的 TableView 的每一行显然只有 1 列。我希望它这次不会生病。:p我知道 ObservableList<> 与 ArrayList 不同,但是这个项目,我试图从 Swings 移植它,所以 jTable 与 ArrayList 配合得很好。this
catch(Exception e)