我第一次从事 java/Javafx 项目,我有一个TableView多列(姓名、名字、年龄...)来呈现我的数据,我需要用户能够选择一行并给我每次有关此人(其他列)的所有信息,即使他单击另一列,但我一直无法找到正确的方法来做到这一点。当我选择一行时,我的代码每次都会给出我单击的单元格的值,但我需要其他信息在我的 SQLite 数据库中搜索并对其进行处理(删除/编辑此人..)
这是我使用的代码:
...//rest of code
@Override
public void initialize(URL location, ResourceBundle resources) {
private TableView<Student> tbl_elev=new TableView<Student>();
...
tbl_elev.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observableValue, Object oldValue, Object newValue) {
//Check whether item is selected and set value of selected item to Label
if (tbl_elev.getSelectionModel().getSelectedItem() != null) {
TableViewSelectionModel<Student> selectionModel = tbl_elev.getSelectionModel();
ObservableList<?> selectedCells = selectionModel.getSelectedCells();
@SuppressWarnings("unchecked")
TablePosition<Object, ?> tablePosition = (TablePosition<Object, ?>) selectedCells.get(0);
Object …Run Code Online (Sandbox Code Playgroud) 我用来QSqlRelationalTableModel从数据库中提取数据,并用来tableView显示它。现在,当我更新数据库时,如何tableView自动更新以显示它?我知道我需要使用函数dataChanged()来自动执行此操作,但我不知道如何使用它?任何建议将不胜感激。
主要代码如下:
QSqlRelationalTableModel *model = new QSqlRelationalTableModel(NULL, db);
model->setTable(tableName);
model->select();
tableView->setModel(model);
tableView->show();
Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,它将根据特定条件显示图像。目前,我的数据显示在 JavaFX 上的表格视图中。我的可观察模型类仅包含有关用户输入信息的信息。我需要比较表视图类中的信息并在称为状态的指定列之一内显示图像。
TableColumn<StudentRecord, ImageView> statusCol = new TableColumn<>("Status");
Run Code Online (Sandbox Code Playgroud)
我遵循了不同的答案,但找不到合适的解决方案。我这样做是为了循环遍历所有对象并显示图标。但这种方法会在每一行上显示图标。
dataController.getAllData().forEach(studentRecord -> {
if (studentRecord.getDate().equalsIgnoreCase("some date")) {
statusCol.setCellValueFactory(c -> new SimpleObjectProperty<ImageView>(new ImageView("/images/tick.png")));
}else{
statusCol.setVisible(false);
}
}
);
Run Code Online (Sandbox Code Playgroud)
我尝试了 StackOverflow 的不同答案,但无法正确实现它。知道如何解决这个问题吗?
如何告诉 jQuery tabledit 行已更改?这些按钮仅为现有行生成,当我添加新行(例如使用 jQuery)时,表格按钮不会\xe2\x80\x99t 出现在新行中。我在 tabledit 代码中看到,可以在视图和编辑模式之间切换(也许这对我有帮助),但是 don\xe2\x80\x99 不知道如何在创建 tabledit 后以及更改行时访问这些方法。
\n\n我的代码中的一小段:
\n\n$(document).ready(function(){ \n $(\xe2\x80\x98#btn\xe2\x80\x99).click(function(){ ... adding row, I need to update tabledit here }); \n $(\xe2\x80\x98#table\xe2\x80\x99).Tabledit(...parameters...); } \n});\nRun Code Online (Sandbox Code Playgroud)\n\n\n 用最简单的方式来说,我想根据两个 DatePicker 中选定日期的日期范围来过滤 TableView 中的数据。
有没有办法添加侦听器或类似于在 TextFields 上使用 addListener 的方法,或者是否有更好的方法来解决此问题?我找不到任何解释这一点的教程。
我是否应该只在按下按钮时调用 Postgres 视图来更新表?
在图像中,如果它正常工作,它将仅显示 TID 16 和 17 的行,其中“Opened”列中的日期位于日期范围之间。
我在我的 tableView 中实现了布尔表示作为复选框。它通常工作正常,但非常令人恼火的事实是它需要关注行(编辑)以应用复选框值的更改。这意味着我首先必须双击该字段,然后单击复选框。
如何使复选框更改立即执行 onEditCommit?
public class BooleanCell<T> extends TableCell<T, Boolean> {
private CheckBox checkBox;
public BooleanCell() {
checkBox = new CheckBox();
checkBox.selectedProperty().addListener(new ChangeListener<Boolean>() {
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (isEditing())
commitEdit(newValue == null ? false : newValue);
}
});
setAlignment(Pos.CENTER);
this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
this.setEditable(true);
}
@Override
public void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
} else {
checkBox.setSelected(item);
setGraphic(checkBox);
}
}
Run Code Online (Sandbox Code Playgroud)
}
我已经用列制作了我的表格视图,一切正常。
我注意到的一件事是,当我过滤行时,一些数据保留在我定义为 cellFactory 的列中。
显示问题的图像:
列的代码:
@FXML
private TableColumn<Log, Integer> colQuanJour;
colQuanJour.setCellValueFactory(new PropertyValueFactory<>("quantite"));
Run Code Online (Sandbox Code Playgroud)
CellFactory 添加颜色和字符(+ 或 -)
colQuanJour.setCellFactory(
new Callback<TableColumn<Log,Integer>,TableCell<Log,Integer>>(){
@Override
public TableCell<Log, Integer> call(TableColumn<Log, Integer> param) {
return new TableCell<Log, Integer>(){
@Override
protected void updateItem(Integer item, boolean empty) {
if( ! empty){
int currIndex = indexProperty().getValue() < 0 ? 0
: indexProperty().getValue();
int operIndex = param.getTableView().getItems().get(currIndex).getOperation().getId_operation();
setStyle("-fx-font-weight: bold");
String Char ;
if(operIndex == 2){
setStyle("-fx-font-size : 16px");
setStyle("-fx-text-fill : red");
Char = "-";
}else {
setStyle("-fx-font-size : 16px");
setStyle("-fx-text-fill …Run Code Online (Sandbox Code Playgroud) 以下是我将标题添加到部分的代码
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let optionsForSection = isMutliLevelOptions() ? options : optionsList?[section]
let sectionView = MenuOptionHeaderView()
sectionView.isMultiSelectAllowed = allowsMultipleSelection(section)
sectionView.selectedOptionsCount = getSelectedCount(section)
sectionView.option = optionsForSection
sectionView.setUI()
//headerView = sectionView
return sectionView
}
Run Code Online (Sandbox Code Playgroud)
以下是访问节标题的代码
func updateHeader(section : Int) {
let headerView : MenuOptionHeaderView = optionsTableView.headerView(forSection: section) as! MenuOptionHeaderView
headerView.selectedOptionsCount = getSelectedCount(section)
headerView.setUI()
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码崩溃说线程 1: 致命错误: 展开可选值时意外发现 nil
我还收到来自“UITableViewHeaderFooterView?”的警告 Cast 对于我的代码,不相关的类型“MenuOptionHeaderView”总是失败
我正在使用 .xib 文件创建 MenuOptionHeaderView 并且工作正常我想知道如何获取特定部分的标题
以下是MenuOptionHeaderView的代码
import UIKit
class …Run Code Online (Sandbox Code Playgroud) 我尝试使用故事板与表视图segue到控制器视图,应该显示我的图片.问题是,当我按下任何"单元格"时,应用程序会崩溃.
这是问题代码:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"ShowPhoto"])
{
DetailsViewController *dvc = [segue
destinationViewController];
NSIndexPath *path = [[self tableView] indexPathsForSelectedRows];
Photo *pic = [photosArray objectAtIndex:[path row]];
[dvc setCureentPic: pic];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是NSIndexPath的行...我认为原因是我尝试将数组插入NSIndex.xcode警告:使用类型为"NSArray"的表达式初始化"NSIndexPath*__ strong"的指针类型不兼容.
crush消息:无法识别的选择器发送到实例[__NSArrayI行].我该如何解决这个问题?
我有一个带有搜索栏,索引栏和部分的tableview.在我的tableview中,我显示了机场的名称.当我点击其中一个名字时,我会得到一个新视图,其中包含有关该人的更多信息.我的问题是每个部分之后indexpath.row开始重新计数.因此,如果我转到第3部分并选择该部分下面的第一行,则indexpath.row为0.因此,我将始终在第一部分中获得有关名称的更多信息.
例:
== A部分==
Amsterdam机场1
阿姆斯特丹机场
阿姆斯特丹机场
== B部分==
布鲁塞尔机场1
布鲁塞尔机场2
如果我在列表中选择'Brussels airport1',则indexpath.row返回0.因此,如果我在我的数组中使用它,它就会像我选择'Amsterdam airport1'一样,因为这是我的数组中的第一项.
我有一个名为机场的数组,我用它来为索引栏创建一个名为airportDictionary的词典.然后当选择一个项目时,我使用indexpath.row检查我的机场阵列我选择的机场.
有谁知道如何解决这个问题?如果您需要更多解释或代码,请询问!
tableview ×10
javafx ×5
ios ×3
java ×2
checkbox ×1
database ×1
datepicker ×1
filter ×1
html-table ×1
imageview ×1
javascript ×1
jquery ×1
nsindexpath ×1
qt ×1
segue ×1
storyboard ×1
swift ×1
uitableview ×1