我有一个活动,我以编程方式创建Tablerow,因为我不知道需要多少文件。 每个TableRow的ID均以100开头,并以200、300等等继续。 当我创建第3行时,TableRow的ID为300。 然后,当有人编辑另一行时,我需要知道哪一行适合与该行的元素一起使用。
我的问题:先前的值: trActiva.getId()= 300
这是我输入的代码:
justify-content: space-evenly
就在这两行之前的位置trActiva.getId()= 300 代码的第一行之后lineaActiva = 200 这意味着第二行之后trActiva.getId()应该为200,但仍为300。
更多奇怪的事情: 在这两行之后:
lineaActiva = (tv.getId()) / 100 * 100;
trActiva = findViewById(lineaActiva);
这是怎么回事?为什么trActiva没有改变?
谢谢!
答案 0 :(得分:0)
我们不确定您如何增加ID和如何存储数据,以及如何在计算机屏幕上查看300行
因此缺少很多代码,无法为您的问题提供非常明确的答案
这是我们从Derby数据库填充的表
该表名为ptable,我们可能还会提到我们正在使用“模型视图控制器”模式来管理GET和SET变量的数据
首先,我们从数据库中读取并使用此代码填充ptable
private void ReadFromParent() throws SQLException{
ObservableList<ParentModel> TableData = FXCollections.observableArrayList();
stmnt = conn.createStatement();
ResultSet rs = stmnt.executeQuery("SELECT * FROM Parent");
while (rs.next()){// Add data to observableArrayList TableData to select a table ROW
TableData.add(new ParentModel(rs.getString("PID"),rs.getString("pMonth"),rs.getString("pYear")));
}
PropertyValueFactory<ParentModel, String> IDCellValueFactory = new PropertyValueFactory<>("PID");
colID.setCellValueFactory(IDCellValueFactory);
PropertyValueFactory<ParentModel, String> DateCellValueFactory = new PropertyValueFactory<>("pMonth");
colMonth.setCellValueFactory(DateCellValueFactory);
PropertyValueFactory<ParentModel, String> TypeCellValueFactory = new PropertyValueFactory<>("pYear");
colYear.setCellValueFactory(TypeCellValueFactory);
// ================================================================
// colTxDate are the ID's for the tableview columns
// sortDate are the Column Names for the Database TABLE CDBalance
// ================================================================
colMonth.setStyle("-fx-alignment: CENTER;");
colYear.setStyle("-fx-alignment:CENTER;");
Collections.sort(TableData, (p2, p1)-> p1.getPID().compareToIgnoreCase(p2.getPID()));
// Line of Code above Sorts Database Columns based on VARIABLE in ParentModel
// Change p2,p1 to sort Ascending or Descending
if(TableData.size() < 15) {// Format TableView to display Vertical ScrollBar
ptable.setPrefWidth(336);// 19 is the off set
}else {
ptable.setPrefWidth(355);
} ptable.setItems(TableData);
stmnt.close();
}
然后我们编写侦听器代码,以允许我们查看所选行的详细信息
请注意,我们从选定的行中获取ID
您可以在此处使用该值查找大于300的新条目。
或者,您可以在表上编写搜索查询,以查找ID大于300的所有记录
这是允许您单击表中一行的代码
private void showTableDataDetails(ParentModel info) throws IOException{
if (info != null) {
info = (ParentModel) ptable.getSelectionModel().getSelectedItem();
strID = info.getPID();
strMONTH = info.getPMonth();
strYEAR = info.getPYear();
toChildView();
System.out.println("########### PID "+strID);
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
ptable.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends ParentModel>
observable,ParentModel oldValue, ParentModel newValue) -> {
try {
showTableDataDetails((ParentModel) newValue); // When a row of the table is Selected call
// Proper Construction // showTableDataDetails method
} catch (IOException ex) {
Logger.getLogger(ParentTableViewController.class.getName()).log(Level.SEVERE, null, ex);
}
});
}
希望这会有所帮助,欢迎使用Stack Overflow
请以后再发布一些代码,以便您的问题有更明确的答案