我正在为Table列编写setCellValueFactory()。
HRSearchController.java
import java.util.List;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.util.Pair;
public class HRSearchController {
private class AreaCell extends ListCell<Area> {
@Override
protected void updateItem(Area a, boolean flag) {
super.updateItem(a, flag);
this.setText(a == null ? "" : a.getPostal());
}
}
@FXML
private TextField input;
@FXML
private ListView<Area> list;
@FXML
private TableView<Pair<String, String>> table;
@FXML
private TableColumn<Pair<String, String>, String> key;
@FXML
private TableColumn<Pair<String, String>, String> value;
@FXML
void initialize() {
list.setCellFactory(lv -> new AreaCell());
list.getSelectionModel().selectedItemProperty().addListener((ob, oldSel, newSel) -> {
});
}
@FXML
void searchArea(ActionEvent event) {
String key = input.getText();
if (!key.isBlank()) {
ObservableList<Area> model = list.getItems();
Response result = HRjson.search(key);
List<Area> location = result.getLocation();
if (location != null) {
model.clear();
model.addAll(location);
}
}
}
}
还有Area.java
import java.util.ArrayList;
import java.util.List;
import javafx.util.Pair;
public class Area {
private String prefecture;
private String city;
private String town;
private String city_kana;
private String town_kana;
private String x;
private String y;
private String postal;
public String getPrefecture() {
return prefecture;
}
public String getCity() {
return city;
}
public String getTown() {
return town;
}
public String getCity_kana() {
return city_kana;
}
public String getTown_kana() {
return town_kana;
}
public String getX() {
return x;
}
public String getY() {
return y;
}
public String getPostal() {
return postal;
}
List<Pair<String, String>> getPairs() {
List<Pair<String, String>> pairs = new ArrayList<>();
pairs.add(new Pair<String, String>("郵便番号", postal));
pairs.add(new Pair<String, String>("都道府県名", prefecture));
pairs.add(new Pair<String, String>("市区名", city));
pairs.add(new Pair<String, String>("市区名カナ", city_kana));
pairs.add(new Pair<String, String>("町村名", town));
pairs.add(new Pair<String, String>("町村名カナ", town_kana));
pairs.add(new Pair<String, String>("経度", x));
pairs.add(new Pair<String, String>("緯度", y));
return pairs;
};
@Override
public String toString() {
return prefecture + " " + city + " (" + city_kana + ") " + town + " (" + town_kana + ") " + "x: " + x + " "
+ "y: " + y + " " + "〒 " + postal + "\n";
}
}
我希望在键和值列中垂直显示结果。有人能帮我吗?我如何在HRSearchController类中为TableColumn编写setCellValueFactory,然后在TableView中显示结果?
通常我使用属性值来设置值,但使用配对大小写,我不知道该怎么做。
感谢您的宝贵时间。
您可以将值包装在可观察属性中并将其设置为单元格值工厂。
TableView<Pair<String,String>> tableView = new TableView<>();
tableView.getItems().addAll(new Pair<>("A","Apple"),new Pair<>("B","Ball"),new Pair<>("C","Cat"));
TableColumn<Pair<String,String>, String> keyCol = new TableColumn<>("Key");
keyCol.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getKey()));
TableColumn<Pair<String,String>, String> valCol = new TableColumn<>("Value");
valCol.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getValue()));
tableView.getColumns().addAll(keyCol,valCol);
私有静态无效printChartAnalysis(analysisResults r){
我试图用一些随机信息创建一个简单的LineChart,但当我试图通过SceneBuilder使用fxml文件创建时,图表显示了但从未填充。每当我手动创建vbox、linechart和scene时,一切工作都很好。我真的很困惑,在使用fxml文件时,图表代码应该去哪里。
我有一个JavaFX,有两个按钮(通过SceneBuilder创建)。 我希望其中一个按钮左对齐,另一个右对齐。(见截图) 从文档中,我已经知道如何在Java源代码中实现这一点: 我想知道如何实现这一点而不需要在我的Java文件中编写,但是 我如何只使用SceneBuilder或相应的fxml文件来实现这一点。 *我在Windows上 **这个答案不是我想要的,因为他使用的是工具栏,但我想知道如何
当我从SourceForge网站下载JasperReports项目时,我创建JavaFx项目,我需要使用JasperReports库创建发票设计。提取的文件夹不包含dist文件夹,该文件夹包含构建发票设计所需的jar文件。文件夹包含这个文件夹,这里有什么问题“我是JasperReports的新手”
问题内容: 因此,我知道JavaFx在使用线程时更新GUI的方法称为Task,但是代码是否以相似的方式工作或存在任何差异。让我举一个例子: GUI之外的另一个作为线程运行的类 在实际的GUI中 Task是否以完全相同的方式工作?还是存在差异?如果存在差异,您将如何修改此代码以在JavaFx项目中工作? 问题答案: 您是否正在寻找JavaFX中的SwingUtil.invokeLater副本。如果是
搜索之后,我发现了两个有趣的答案: > 对 javaFX 的本机映像格式支持 使用javaFX控制gif图像 但是正如我所看到的,javaFX不支持APNG图像。如何使用任何外部库或编写一些代码来解决此问题。我需要一个解决方案... 谢谢你的帮助。
我想在我的列表视图上有圆角。我目前使用的CSS使角变圆,直到我向ListView添加一个新字符串,然后角不再是圆的。我使用ObservableList来存储我的字符串,并将ListView设置为ObservableList。 我也检查了JavaFX CSS参考,但找不到任何对我的问题有用的东西。 无文本 添加文本后 我目前的 css
问题内容: 可以说我有一堂课: 我有一个此类的ArrayList 是否可以使用对象名称属性作为选择选项来创建JavaFX ComboBox,而无需使用对象名称创建新的JavaFX ComboBox ? 伪代码: (可选)理想情况下,虽然应该显示名称,但在选择了一个选项后,该名称应该返回给我所选的Dummy的引用,而不仅仅是名称。那可能吗? 问题答案: 您可以使用自定义方式来显示适合您需求的项目: