我为我的主要项目做了一段时间的插座编程。所以在从这里和其他博客阅读了很多内容后,我设法制作了一个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
。现在我想将这个袜子添加到我的TableView作为IP地址。但我不知道怎么做。?
此外,如果连接从this
语句中的另一侧丢失,我怎么能删除catch(Exception e)
对象,就像我试图做但没有运气一样。!
后来我想通过流将整个列表发送给其他客户端。那么我如何遍历我的TableView的每一行,显然只有一列。
我希望这次没有发布。 :P
我知道ObservableList&lt;&gt;与ArrayList不同,但是这个项目,我试图从Swings中移植它,所以jTable在ArrayList中工作得很好。