在focframework中的表中添加按钮

时间:2018-07-18 13:49:10

标签: java

我使用focframework作为完整堆栈来用JAVA开发Web应用程序。

我想在表中添加一列,然后在该列中放置一个按钮。它也可以是其他任何组件,但目前我想放置一个按钮。例如,像红色的一样,我们看到下面的声音:

enter image description here

我只知道如何添加列以显示表中显示的FocObject的属性。而且在如下所示的Form的XML中很容易:

<GuiTable title="Employees" name="EMPLOYEE_GUI_TABLE" dataPath="DATAROOT" >
    <TableColumn name="_LINE_NUMBER" />
    <TableColumn name="FirstName" caption="FirstName" link="true"/>
    <TableColumn name="LastName" caption="LastName" link="true"/>
    <TableColumn name="StartShift" caption="StartShift" />
    <TableColumn name="EndShift" caption="EndShift" />
</GuiTable>

我想添加一个新列,但内容不是FocObject的属性。有办法吗?

1 个答案:

答案 0 :(得分:1)

在focframework中,要添加一个不显示FocObject属性的自定义列,请先在Form.xml中添加您选择的名称,如下所示:

<GuiTable title="Employees" name="EMPLOYEE_GUI_TABLE" dataPath="DATAROOT" >
    <TableColumn name="_LINE_NUMBER" />
    ...
    <TableColumn name="EndShift" caption="EndShift" />
    <TableColumn name="PRINT_BUTTON" caption="Print" />
</GuiTable>

请注意,PRINT_BUTTON是我为列选择的名称。

现在,在Form Java类中,您需要重写以下方法 table_getGeneratedColumn :如果您想让FOC管理组件创建,则该方法应返回null,但在我们的情况下,对于该特定列名PRINT_BUTTON,我们要返回一个特殊的生成器:

public ColumnGenerator table_getGeneratedColumn(String tableName, final FVTableColumn tableColumn) {
    ColumnGenerator columnGenerator = null;
    if (    tableColumn != null 
            &&  tableColumn.getName() != null
            &&  tableColumn.getName().equals("PRINT_BUTTON")) {

        columnGenerator = new ColumnGenerator() {
            @Override
            public Object generateCell(Table source, Object itemId, Object columnId) {
                Button button = new Button("Print");
                button.addClickListener(new ClickListener() {
                    @Override
                    public void buttonClick(ClickEvent event) {
                        Globals.showNotification("Button Clicked", "The print button has been licked", IFocEnvironment.TYPE_HUMANIZED_MESSAGE);
                    }
                });
                return button;
            }
        };

    }           
    return columnGenerator;
}

结果如下: enter image description here