您的位置:首页 > 编程语言 > Java开发

JavaFX中TextFieldTableCell的颜色问题

2016-04-12 20:17 399 查看
在做大作业的过程中用了javafx,然后想实现类似股票的颜色列表,一个tableview,如果股票涨了就用红色,跌了就用绿色。

一开始一直以为是TableCell已经被TextField重写,所以产生了奇怪的bug

结果写了很久找了很多办法但是都有异常,最后请教大神才知道是一行中格式有double和string两种,所以Item要用Object这个类就好了

最后附上重写的TableCell

private class TaskCellFactory implements Callback<TableColumn<Task, Object>, TableCell<Task, Object>> {

@Override
public TableCell<Task, Object> call(TableColumn<Task, Object> param) {
TextFieldTableCell<Task, Object> cell = new TextFieldTableCell<Task, Object>() {
ObservableValue ov;

@Override
public void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty()) {
double up = Double.valueOf(this.getTableView().getColumns().get(3).getCellData(getIndex()).toString());
if (up < 0) {
this.setTextFill(Color.GREEN);
}
else if (up > 0) {
this.setTextFill(Color.RED);
}else
this.setTextFill(Color.WHITE);

setText(item.toString());
}
}
};
cell.setOnMouseClicked((MouseEvent t) -> {
if (t.getClickCount() == 2) {
try {
int index = secondTable.getFocusModel().getFocusedIndex();
String id = ((DSecond) secondTable.getItems().get(index)).getIdnumber();
main.CFIRST.setCollectionID(id);
swiftController(id, new TimeFilter(timeHelper.getStart(), timeHelper.getEnd()));
} catch (IOException e) {
e.printStackTrace();
}
}
if (t.getClickCount() == 1) {
int index = secondTable.getFocusModel().getFocusedIndex();
String id = ((DSecond) secondTable.getItems().get(index)).getIdnumber();
main.CFIRST.setCollectionID(id);
try {
setGraph(id, new TimeFilter(timeHelper.getStart(), timeHelper.getEnd()));
} catch (IOException e) {
e.printStackTrace();
}

}
});
//cell.setContextMenu(taskContextMenu);
return cell;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Javafx css color