【问题标题】:gxt: custom grid cell stylegxt:自定义网格单元格样式
【发布时间】:2012-01-11 13:52:48
【问题描述】:

我想在网格中创建自定义单元格。这不是问题。 问题:此自定义单元格中的文本样式不正确。

myColumn.setRenderer(new GridCellRenderer<TaskModel>() {
        public Object render(TaskModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<TaskModel> taskModelListStore, Grid<TaskModel> taskModelGrid) {
            VerticalPanel panel = new VerticalPanel();

            Html html = new Html("xxxx");

            Button b = new Button("xxxxxxxx");

            panel.add(html);
            panel.add(b);

            return panel;
        }
    });

为什么会这样?

【问题讨论】:

    标签: java grid cell render gxt


    【解决方案1】:

    您必须为自己设置样式。

     Html html = new Html("<div class=\"myStyle\">xxxx</div>");
    

    然后在 stylesheet.css 文件中(根据您的项目设置,名称可能不同)

    .myStyle {
        //style you want
    }
    

    或内联,如果您不想编辑样式文件,例如:

     Html html = new Html("<div style=\"font-weight: bold;\">xxxx</div>");
    

    但是我更喜欢将样式存储在代码之外的位置(如我的第一个建议)

    【讨论】:

      【解决方案2】:

      如果您希望文本的样式与其他 GXT 文本相同,请创建一个 GXT Text 对象并添加它。如果您想要自定义样式,则需要按照@denu 的建议使用您自己的 CSS。

      我认为像new Text("xxxx"); 这样的东西可能是你想要的。

      【讨论】:

        【解决方案3】:

        @特拉维斯 有什么区别:

        ColumnConfig column1 = new ColumnConfig("1", 200);
                column1.setRenderer(new GridCellRenderer<TaskModel>() {
                    public Object render(TaskModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<TaskModel> taskModelListStore, Grid<TaskModel> taskModelGrid) {
                        VerticalPanel panel1 = new VerticalPanel();
        
                        panel1.add(new Html("html"));
                        panel1.add(new Label("label"));
                        panel1.add(new Text("text"));
                        panel1.add(new Button("button"));
                        return panel1;
                    }
                });
                ColumnConfig column2 = new ColumnConfig("2", 200);
                column2.setRenderer(new GridCellRenderer<TaskModel>() {
                    public Object render(TaskModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<TaskModel> taskModelListStore, Grid<TaskModel> taskModelGrid) {
                        return new Text("text");
                    }
                });
        

        【讨论】: