我的TableView没有显示德语 Umlaut ,如äöü尽管 我的控制台向我展示了杜塞尔多夫,科隆,慕尼黑等人的正确角色。
我是否必须在tableView中设置字符集等?
这是一个例子
TableColumn<TextData, String> column;
TableView<TextData> table;
ObservableList<TextData> data = FXCollections.observableArrayList();
...
...
//part of main code
Task<ObservableList<TextData>> task = new Task() {
@Override
protected Object call() throws Exception {
IOFileOperations io = new IOFileOperations(fileName);
data = io.getData();
colNumSize=io.getNumberOfColumns();
Platform.runLater(new Runnable() {
@Override
public void run() {
for(int i=0;i<colNumSize;i++) {
final int x=i;
column = new TableColumn<>("["+x+"]");
//populate the columns with data
column.setCellValueFactory(cellData -> cellData.getValue().dataProperty(x));
table.getColumns().add(column);
}
table.setItems(data);
}
});
return null;
}
};
new Thread(task).start();
//method getData in class IOFileOperations
public ObservableList<TextData> getData() {
int numRow=results.length; //<-results a string of Array (String [][] results)
int numCol=results[0].length;
for(int i=0;i<numRow;i++) list.add(new TextData(i,numCol, results));
return list;
}
//class TextData
public class TextData {
public StringProperty [] dataValue;
public TextData(int row, int numCol, String loadedText [][]) {
this.dataValue = new StringProperty[numCol];
for(int i=0;i<numCol;i++) dataValue[i] = new SimpleStringProperty(loadedText[row][i]);
}
}
答案 0 :(得分:3)
问题在于您如何阅读此课程中的数据IOFileOperations
如果不包含这些内容,我们无法帮助您找出实施中的确切问题。
下面我提供了一个重新创建问题的示例,包括如何使用以下文本文件进行更正:
杜塞尔多夫
科隆·慕尼黑
哪个应该可以帮助您调试和纠正自己的实现
public class City {
private int id;
private String name;
public City(int id, String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
阅读数据:
请注意,在此步骤中,我们可以提供要使用的字符集。使用UTF-8时,所有内容都会按预期显示,但如果您在注释行之间切换,则无法识别变音符号
ObservableList<City> data = FXCollections.observableArrayList();
File file = new File("test.txt");
//Charset charset = StandardCharsets.US_ASCII;
Charset charset = StandardCharsets.UTF_8;
int currentId = 0;
try(BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(file), charset))) {
String line = reader.readLine();
while (line != null) {
data.add(new City(currentId, line));
line = reader.readLine();
currentId++;
}
}
设置TableView:
TableView<City> tableView = new TableView();
TableColumn idColumn = new TableColumn("Id");
idColumn.setCellValueFactory(
new PropertyValueFactory<>("id"));
TableColumn cityColumn = new TableColumn("City");
cityColumn.setCellValueFactory(
new PropertyValueFactory<>("name"));
tableView.getColumns().setAll(idColumn, cityColumn);
tableView.getItems().addAll(data);
<小时/> 字符集之间的区别: