我使用focframework作为完整堆栈来用JAVA开发Web应用程序。
我想在表中添加一列,然后在该列中放置一个按钮。它也可以是其他任何组件,但目前我想放置一个按钮。例如,像红色的一样,我们看到下面的声音:
我只知道如何添加列以显示表中显示的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的属性。有办法吗?
答案 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;
}