JavaFX中TextFieldTableCell的颜色问题

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


发布了16 篇原创文章 · 获赞 25 · 访问量 6万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览