JavaFX中TextFieldTableCell的颜色问题

来源:互联网 发布:好软网络电视绿色版 编辑:程序博客网 时间:2024/05/17 22:13

在做大作业的过程中用了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;        }}


0 0
原创粉丝点击