BOS开发 - KDTable常用处理代码

目录

如何使得KDTable支持多行文本的显示: (1)

如何设置KDTable向下键自动新增行 (2)

如何设置KDTable Tab键和Enter键自动新增行 (2)

如何调整KDTable的Tab键和enter键的行为 (3)

KDTable如何根据内容自动调整行高列宽 (3)

KDTable的排序要如何实现 (3)

KDTable部分数据导出到excel后显示格式不一致 (4)

如何控制KDTable的显示格式 (5)

如何理解KDTable的Render和Editor (6)

如何在取数之后,调整KDTable单元格的内容或者显示格式 (6)

KDTable刷新后,滚动条跳到最后修改位置 (7)

如何通过代码控制KDTable新增行 (7)

对于分录设置排序 (8)

EAS Bos 合计行代码 (8)

EASBos 对于某个权限的验证 (10)

关于Bos 开发中使用字段类型是选择已有基础资料的的源代码 (10)

关于对EASbos 分录设定默认值 (11)

关于eas 单据中有多个分录的情况下,默认是哪个实现了排序 (11)

eas bos 客户端常用代码 (12)

关于验证常用的几个类文件和代码 (13)

EAS多分录单据分录添加按钮,加到最左边 (14)

禁用EAS多分录单据分录上的操作按钮 (15)

显示EAS标准单据自带kdtable(kdtEntry) 右键导出excel菜单 (16)

列表界面根据情况设置单行背景色高亮 (17)

修改ListUI的表体列的显示文字 (18)

如何使得KDTable支持多行文本的显示:

只需要给KDTable的列设置一个多行显示的属性即可。设置的方法:

col.getStyleAttributes().setWrapText(true);

如何设置KDTable向下键自动新增行

KDTableHelper里面的方法

1. /**

2. * 在table的最后一行按下箭头自动新增行。

3. *

4. * @param table

5. * @paramisAddRow

6. * 是否自动新增行

7. * @paramactionAfterAddRow

8. * 新增行后将触发的事件

9. */

10.public static void downArrowAutoAddRow(KDTable table, booleanisAddRow, Action actionAfterAddRow)

如何设置KDTable Tab键和Enter键自动新增行

KDTableHelper的这个方法可以满足这个需求:

1. /**

2. * 修改Enter键的行为使它于Tab一致

3. *

4. * @param table

5. * @paramisAddRow

6. * 焦点到了最后一行,再次按下enter和tab是否自动增加新行

7. * @paramactionAfterAddRow

8. * 添加新行后的事件

9. */

10.public static void updateEnterWithTab(KDTable table, booleanisAddRow, Action actionAfterAddRow)

如何调整KDTable的Tab键和enter键的行为

KDTable默认情况下Tab键和Enter键分别起到单元格选择调整的作用,Tab键跳到右侧单元格,Enter键跳到下方的单元格。

KDTableHelper提供了一些方法用于修改Enter键和Tab键的行为。

KDTableHelper.releaseEnter:释放Enter键,即KDTable将不响应Enter键。KDTableHelper.releaseTab:释放Tab键,即KDTable将不响应Tab键。KDTableHelper.releaseEnterAndTab:释放Tab和Enter键。

KDTable如何根据内容自动调整行高列宽

双击KDTable的两行(或者列)之间的边线,将会根据内容自动调整行高(列宽)。

通过调用KDTableHelper的autoFitRowHeight和autoFitColumnWidth这两个方法也可以调整行高列宽。计算行高和列宽需要结合字体、Graphics上下文,是比较耗时的,应有时需要注意。

KDTable的排序要如何实现

KDTable的排序都是由KDTSortManager来实现的。分为实模式和虚模式两种应用模式。

虚模式:排序的具体实现由外部通过继承并重写KDTSortManager的sort方法来实现。例如ListUI的就是重写了这个sort方法,在这个方法中清楚KDTable中的数据,然后刷新KDTable,用新的排序方式重新向服务端取数。

1. KDTSortManagersm = new KDTSortManager(table)

2. {

3. public void sort(intcolIndex, intsortType)

4. {

5. // 一定要调用super.sort,这句代码将影响表头排序箭头的显示效果

6. super.sort(colIndex, sortType);

7.

8. if (sortType == KDTSortManager.SORT_ASCEND)

9. {

10. // 升序

11. }

12. else

13. {

14. // 降序

15. }

16. }

17. };

复制代码

实模式:KDTSortManager内置了实模式下的排序方式,不需要重写sort方法即可实现实模式的排序,当然,你也可以重写sort方法来实现自己的排序逻辑。

1. KDTSortManagersm = new KDTSortManager(table)

2. sm.setSortAuto(true);

KDTable中如何调整行高列宽

有些时候,KDTable中单元格的文本内容过长,单元格显示不下,需要调整行高或者列宽,通过鼠标双击行或者列的边框线,KDTable会自动调整行高或者列宽到合适位置。

如果想要通过代码在后台调整行高列宽到合适位置,下面的方法分别对应行高、列宽、表头行高:

KDTableHelper的autoFitRowHeight、autoFitColumnWidth、autoFitHeadRowHeight

由于计算合适行高列宽,需要结合当前Graphics以及字体等信息进行计算,这个动作是相对比较耗时的,因此这些方法要结合实际情况使用,大数据量下使用这些方法,将可能导致性能问题。

KDTable部分数据导出到excel后显示格式不一致

这种问题一般是由于没有给KDTable设置正确的格式导致的。主要分为一下几类:

1、由数字组成的长字符串导出excel后显示为科学计数法或字符串显示不完整,例如手机号134********。

解决办法:给KDTable的列设置格式串

(col.getStyleAttributes().setNumberFormat("@")),指定该列为字符型即可。

2、数字位过多的大数字导出excel后显示为科学计数法或精度丢失。

解决办法:给KDTable的列设置格式串

(col.getStyleAttributes().setNumberFormat("0.00"))。这里的0.00只是示例,数字格式还有很多种,具体可以参考前面显示格式的介绍。

3、日期类型数据导出excel后显示格式不正确。

解决办法:给KDTable的列设置格式串

(col.getStyleAttributes().setNumberFormat("yyyy-MM-dd"))。这里的yyyy-MM-dd只是示例,日期格式还有很多种,具体可以参考前面显示格式的介绍

如何控制KDTable的显示格式

KDTable提供了格式化的功能,通过格式化的功能可以控制单元格的显示格式,设置列格式的方法:

table.getColumn(colIndex).getStyleAttributes().setNumberFormat(formatString); 目前KDTable已能支持Excel2003的格式串,只有个缺陷:格式串中有中文导出尚有问题,中文变乱码,建议将来都使用Excel2003的格式串,但旧的格式化串还支持,但是如果该表需要导出到excel,必须使用新的格式串,否则导出到excel,可能会显示不一致。

文本类:

1、@ 指定内容按文本显示,主要用于编码、手机号等用数字表示的文本。设定该格式后,可以保证导出excel时,此类文本不会被转成数字显示。

数值类:

1、 0.00 表示两位小数,例如3.10367显示为3.10

2、 0.## 表示两位小数,当小数末位为0时,0将不显示。例如3.10显示为3.1

3、 "#,##0.00 "表示两位小数,且显示千份位

4、 #,##0.00;[Red]#,##0.00 表示负数红字

5、0.00;[Red]0.00;" " 表示负数红字,且数据为0时不显示

6、0.00;[Red](0.00);" "表示正数时两位小数,负数时两位小数并显示红色,0时不显示。

0.00;[Red](0.00)只是一个示例,可以为任意的数字格式串,后边再加上;" "(空格)即表示

数据为0时不显示。

日期类:

1、yyyy-m-d

2、yyyy-MM-dd

3、yyyy-MM-ddhh:mm:ss

4、yyyy年MM月dd日

百分比:

1、0%

2、0.00%

……详细请打开Excel2003,单元格右键,设置单元格格式,选一种格式,点自定义即可看到该格式的格式串;有的Excel格式串后有带”_”,在使用时,必须去掉。

如何理解KDTable的Render和Editor

Render即为绘制器,KDTable的每个单元格都是对应的绘制器绘制出来的,例如文本绘制器将进行文本的绘制,CheckBox绘制器将在单元格绘制CheckBox的样子,图片绘制器将在单元格绘制图片等。

Editor即为编辑器,当单元格进入编辑状态后,会在单元格的位置显示编辑器,通过编辑器可以修改单元格的值。在同一时刻,只能有一个单元格进入编辑状态。进入编辑状态的方法有(1)双击或者单击某个单元格,有些编辑器是双击以后再进入,有些编辑器是单击后进入;(2)选中某个单元格,按F2可以进入编辑器;(3)选中某个单元格,按下编辑器能接受的按键,例如文本编辑器可以接受任意可见字符,checkbox可以接受空格键作为切换选择的键,按下这些键后,单元格也将进入编辑状态。结束编辑的方法有(1)在编辑器中按下Enter键或者Tab键;(2)在编辑状态下点击表格的其他单元格;(3)表格控件失去焦点。在编辑状态下按下Esc键将取消编辑。结束编辑和取消编辑的区别在于,结束编辑时会将单元格的值修改为编辑器的值,取消编辑器将保持单元格的旧值。

如何在取数之后,调整KDTable单元格的内容或者显示格式

table. addKDTDataFillListener这个事件将在取数事件之后被调用,在这个事件当中,取数事件获取的数据已经填充到KDTable当中,可以直接获取KDTable的行及单元格进行操作。DataFillListener和取数事件是一一对应的,取数事件调用一次则DataFillListener将被调用一次,而且DataFillListener的事件参数中的起始行和结束行也是和取数事件的参数一致的。需要注意的是在DataFillListener中只能访问事件参数中的起始行和结束行范围的行,千万不要在这个事件里访问table的所有行,因为如果在这里访问不在事件参数范围内的行,可能导致再次触发取数事件。

KDTable刷新后,滚动条跳到最后修改位置

kdtEntrys.getLayoutManager().scrollRowToShow(rowInde);

如何通过代码控制KDTable新增行

方法一:

//增行

EmpEnrollBizBillEntryInfo entry = new EmpEnrollBizBillEntryInfo();//创建分录的实体

entry.setEmpName(name);//设置实体属性

entry.setIDCardNo(id);

editData.getEntrys().add(entry);//将实体新增到editData的实体列表中。

loadFields();//重新加载分录信息

方法二:

//增行

addLine(kdtEntries);

IRow newRow = kdtEntries.getRow(kdtEntries.getRowCount()-1);//获取新增的行对象//设置分录的实体

newRow.setUserObject(new ReceivingBillEntryInfo());

//设置分录实体的属性

newRow.getCell("Band").setValue(obei.getBand());//品牌

newRow.getCell("ProductSeries").setValue(obei.getProductSeries());//产品线newRow.getCell("Period").setValue(obei.getPeriod());//期数

对于分录设置排序

KDTSortManagersortManager = new KDTSortManager(kdtEntrys);

sortManager.setSortAuto(true);

sortManager.setClickCount(1);

for(inti = 0; i

this.kdtEntrys.getColumn(i).setSortable(true);

}

EAS Bos 合计行代码

/**

* 功能:添加合计行

*

* @param table

* 指定的KDTable

* @param fields

* 需要合计的列

*/

public static void apendFootRow(KDTable table, String fields[]) {

int size = fields.length;

if (size == 0)

return;

Map sumValue = new HashMap();

// 利用getRowCount的到的行可能不正确

int count = table.getRowCount3();

for (inti = 0; i

sumValue.put(fields[i], new BigDecimal("0.00"));

}

IRowfootRow = null;

KDTFootManagerfootManager = table.getFootManager();

if (footManager == null) {

footManager = new KDTFootManager(table);

footManager.addFootView();

table.setFootManager(footManager);

}

// 计算所有指定行的合计值

footRow = footManager.getFootRow(0);

for (inti = 0; i< count; i++) {

IRow row = table.getRow(i);

for (int j = 0; j

sumValueForCell(row, fields[j], sumValue);

}

}

if (footRow == null) {

footRow = footManager.addFootRow(0);

}

// 设置合计行显示样式

String colFormat = "%{0.00}f";

String total = EASResource.getString(FrameWorkClientUtils.strResource

+ "Msg_Total");

table.getIndexColumn().setWidthAdjustMode(KDTIndexColumn.WIDTH_MANUAL); table.getIndexColumn().setWidth(30);

footManager.addIndexText(0, total);

footRow.getStyleAttributes().setBackground(new Color(0xf6, 0xf6, 0xbf));

for (inti = 0; i< size; i++) {

String colName = fields[i];

footRow.getCell(colName).getStyleAttributes().setNumberFormat( colFormat);

footRow.getCell(colName).getStyleAttributes().setHorizontalAlign( HorizontalAlignment.RIGHT);

footRow.getCell(colName).getStyleAttributes().setFontColor(

Color.black);

}

// 设置合计行的值

for (inti = 0; i

footRow.getCell(fields[i]).setValue(sumValue.get(fields[i]));

}

}

private static void sumValueForCell(IRow row, String key, Map sumValue) {

ICell cell = row.getCell(key);

if (cell != null) {

Object obj = cell.getValue();

if (obj != null) {

BigDecimalkeyValue = (BigDecimal) sumValue.get(key);

keyValue = keyValue.add(new BigDecimal(obj.toString()));

sumValue.put(key, keyValue);

}

}

}

EASBos 对于某个权限的验证

s BOSUuiduserId=SysContext.getSysContext().getCurrentUserInfo().getId();

BOSUuidorgId=SysContext.getSysContext().getCurrentOrgUnit().getId();

ObjectUuidPKuserPK = new ObjectUuidPK(userId);

ObjectUuidPKorgPK = new ObjectUuidPK(orgId);

com.kingdee.eas.base.permission.IPermission perm= null;

try {

perm =PermissionFactory.getRemoteInstance();

perm.hasFunctionPermission(userPK, orgPK,

"custom_qua_QuaT arget_addnew");

} catch (Exception e) {

e.printStackTrace();

}

关于Bos 开发中使用字段类型是选择已有基础资料的的源代码

s public void kdtPerson_Changed(introwIndex, intcolIndex) throws Exception { if ("number".equalsIgnoreCase(kdtPerson.getColumn(colIndex).getKey())) { String name=(com.kingdee.bos.ui.face.UIRuleUtil

.getString(com.kingdee.bos.ui.face.UIRuleUtil.getProperty(

(com.kingdee.bos.dao.IObjectValue) kdtPerson

.getCell(rowIndex, "number").getValue(),

"name")));

kdtPerson.getCell(rowIndex, "name").setValue(name);

}

}

关于对EASbos 分录设定默认值

kdtEntrys_detailPanel.addAddListener(

new com.kingdee.eas.framework.client.multiDetail.IDetailPanelListener() {

public void beforeEvent(

com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event)

throws Exception {

IObjectValuevo = event.getObjectValue();

vo.put("type","1");

vo.put("count",new Integer(10));

}

public void afterEvent(com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event)

throws Exception {

}

});

关于eas 单据中有多个分录的情况下,默认是哪个实现了排序

protectedKDTablegetDetailTable() {

return kdtEntrys;

}

关键就是看这个方法中的分录是那个分录,那个分录就默认实现了排序的工程。对于其他的,可以自己使用代码实现一个简单的排序

KDTSortManagersortManager = new KDTSortManager(kdtEntrys);

sortManager.setSortAuto(true);

sortManager.setClickCount(1);

for(inti = 0; i

this.kdtEntrys.getColumn(i).setSortable(true);

}

eas bos 客户端常用代码

public void onLoad() throws Exception {

super.onLoad();

contname.setEnabled(false);

contname.setVisible(true);

KDTDefaultCellEditorworkArea_editor = (KDTDefaultCellEditor) kdtEntrys

.getColumn("workArea").getEditor();

KDBizPromptBoxworkArea_prompt = (KDBizPromptBox) workArea_editor

.getComponent();

workArea_prompt

.setQueryInfo("com.kingdee.eas.custom.quality.basedata.app.F7GongquCategoryQuery");

KDTDefaultCellEditorprofessional_editor = (KDTDefaultCellEditor) kdtEntrys

.getColumn("professional").getEditor();

KDBizPromptBoxprofessional_prompt = (KDBizPromptBox) professional_editor

.getComponent();

professional_prompt

.setQueryInfo("com.kingdee.eas.custom.quality.basedata.app.F7SubjectTypeQuery");

KDTDefaultCellEditoroutPerson_editor = (KDTDefaultCellEditor) kdtEntrys

.getColumn("outPerson").getEditor();

KDBizPromptBoxoutPerson_prompt = (KDBizPromptBox) outPerson_editor

.getComponent();

outPerson_prompt.setDisplayFormat("$cardId$");

outPerson_prompt.setEditFormat("$cardId$");

outPerson_prompt.setCommitFormat("$cardId$");

kdtEntrys_detailPanel.setTitle("外包人员信息");

CompUtil.setTitlePanelLength(kdtEntrys_detailPanel, 120);

}

protected void verifyInput(ActionEvent e) throws Exception {

KDLabelContainer[] container = new KDLabelContainer[] { contcontractNum,

contsubUnit,contprojectItem};

STExceptionexc = STRequiredUtils.checkRequiredItem(container);

if (STUtils.isNotNull(exc)) {

super.handUIExceptionAndAbort(exc);

}

String[] columnNames = new String[] { "outPerson","team","workArea","professional","startDate"};

STException exc2 = STRequiredUtils.checkEntryRequiredItem(kdtEntrys,

columnNames);

if (STUtils.isNotNull(exc2)) {

super.handUIExceptionAndAbort(exc2);

}

super.verifyInput(e);

}

关于验证常用的几个类文件和代码

1 TrainVerifyUtils

TrainVerifyUtils.verifyRepeatRow(this, kdtEntrys, "type", "试题类型");

2 TrainUtils

TrainUtils.getSelectedValues(tblMain);

3 commonUtilFacade

if (commonUtilFacade.checkColumnDup("CT_BD_QuaItem", "FNumber", editData.getNumber(), editData.getId())) {

MsgBox.showInfo(this, EASResource.getString(RES, "number_repeat"));

SysUtil.abort();

}

4 必录项检查

// 检查必填项调用代码

KDLabelContainer[] container = new KDLabelContainer[] { contNumber,

conttitle,contsystem,contBizDate,contstartTime,contendTime,conttotalScore,c onttotalTime,contstate };

STExceptionexc = STRequiredUtils.checkRequiredItem(container);

if (STUtils.isNotNull(exc)) {

super.handUIExceptionAndAbort(exc);

}

EAS多分录单据分录添加按钮,加到最左边

EAS多分录标准单据的分录操作按钮是在表格右上方的,有时由于业务需求,需要添加其它的操作按钮,以满足业务需求,可以先通过BOS设计工具,在UI上任一位置添加好所需要的代码,再通过如下代码,把按钮添加到多分录表头上。当你把指定的按钮添加到分录的按钮面板上后,UI上的自动就不显示了。

先定义好方法。

/**

* 给分录上添加按钮,加到最左边

*

* @author syj

* @date 2009-7-8

*

* @param table

* @param button

*/

private void addButtonToHMDEntry(KDTable table, KDWorkButton button) {

if (table.getParent() == null || table.getParent().getParent() == null)

return;

// 隐藏按钮

Component c = table.getParent().getParent();

if (c instanceofDetailPanel) {

JPanel panel = (JPanel) c;

JPanelcontrolPanel = null;

// 获取controlPanel

Component[] components = panel.getComponents();

for (inti = 0; i

Component component = components[i];

if ("controlPanel".equals(component.getName())) {

controlPanel = (KDPanel) component;

}

}

// 获取btn

if (controlPanel != null) {

Rectangle rect = table.getBounds();

int x = rect.width - (button.getWidth() + 86 + 5);

controlPanel.add(button, new com.kingdee.bos.ctrl.swing.KDLayout.Constraints(x, 5, button.getWidth(), 19, 9));

}

}

}

禁用EAS多分录单据分录上的操作按钮

EAS多分录标准单据的分录操作按钮是在表格右上方的,有时由于业务需求,这部分数据要自动生成,不充许操作,可能需要禁用或隐藏这些按钮,由于框架没有提供相应的接口,可以通过以下代码来实现

public static void disableHMDEntryButtons(KDTable table) {

if (table.getParent() == null || table.getParent().getParent() == null)

return;

// 隐藏按钮

Component c = table.getParent().getParent();

if (c instanceofDetailPanel) {

JPanel panel = (JPanel) c;

JPanelcontrolPanel = null;

// 获取controlPanel

Component[] components = panel.getComponents();

for (inti = 0; i

Component component = components[i];

if ("controlPanel".equals(component.getName())) {

controlPanel = (KDPanel) component;

}

}

// 获取btn

if (controlPanel != null) {

components = controlPanel.getComponents();

for (int j = 0; j

Component component = components[j];

if (component instanceofKDWorkButton) {

KDWorkButtonworkButton = (KDWorkButton) component;

workButton.setEnabled(false);

}

}

}

}

}

显示EAS标准单据自带

kdtable(kdtEntry) 右键导出 excel菜单

框架在CoreUI中,把“导出到Excel”和“导出选择部分到Excel”2个右键菜单给隐藏掉了,可以通过覆盖下面的方法使这两个菜单显示。

/**

* 显示被框架隐藏的导出Excel的右键菜单

* @author syj

*/

public KDTMenuManagergetMenuManager(KDTable table) {

KDTMenuManagermenuManager = super.getMenuManager(table);

if (menuManager != null) {

Component menus[] = menuManager.getMenu().getComponents();

for (inti = 0; i

if (menus[i] instanceofJMenuItem) {

JMenuItem menu = (JMenuItem) menus[i];

menu.setVisible(true);

}

}

return menuManager;

}

列表界面根据情况设置单行背景色高亮

列表的填充是在afterTableFillData之前进行的,所以判断的代码可以加在这个方法里面。protected void afterTableFillData(KDTDataRequestEvent e) {

super.afterTableFillData(e);

int count = this.tblMain.getRowCount();

if(count>0){

for(inti=0; i

IRow row = tblMain.getRow(i);

if(row.getCell("https://www.360docs.net/doc/3d14001833.html,").getValue()!=null &&

"H".equals(row.getCell("https://www.360docs.net/doc/3d14001833.html,").getValue().toString().trim())){

row.getStyleAttributes().setBackground(n ew Color(255,80,30));

}else if(row.getCell("https://www.360docs.net/doc/3d14001833.html,").getValue()!=null && "M".equals(row.getCell("https://www.360docs.net/doc/3d14001833.html,").getValue().toString().trim()))

row.getStyleAttributes().setBackground(Color.O RANGE);

}

}

}

另外有一个execQuery方法,如果加在这个方法里,那么只有当有过滤条件和点刷新按钮时,才会起作用。

修改ListUI的表体列的显示文字

this.tblMain.getHeadRow(0).getCell(27).setValue("所属管家");

KDTable显示枚举

覆盖方法

枚举在KDTable中显示数字解决

在KDTable中,如果该列是枚举,则显示的value,不会显示别名,要显示别名有两个方法:1、在Query中用case 语句,这个办法比较笨,如果枚举添加,或者比较多,需要重新修改Query。不建议使用。

2、覆盖父类方法getQueryExecutor

3、在KDTable的列中设置Editor。这样该列也会显示成下拉框:

添加统计行

1、分录中添加统计行

protected void setTableToSumField() {

super.setTableToSumField();

setTableToSumField(kdtDeviceReg, new String[] { "deviceQty", "devicePrice", "oldTotalPrices", "totalMoney" });

}

2、叙事薄上添加统计行

在query中字段有是否是统计字段(isSumField)扩展属性,设为true,主键定义上添加id,叙事薄中就自动汇总了

序时簿上的排序设置

EAS单据序时簿的排序,通过修改相应Query上的排序是不生效的,这时需要重写序时簿的getQueryExecutor方法。以下是重写的例子:

protected IQueryExecutorgetQueryExecutor(IMetaDataPK arg0,

EntityViewInfo arg1) {

SorterItemCollection sic = new SorterItemCollection();

SorterItemInfosiInfo = new SorterItemInfo("bizDate");

siInfo.setSortType(SortType.ASCEND);

sic.add(siInfo);

arg1.setSorter(sic);

return super.getQueryExecutor(arg0, arg1);

}

KDTable单元格如何格式化显示。

开发过程中需要对KDTable表格单元格中的数值型显示为后面加年,比如输入的是“3”,但要求显示为“3年”,代码如下即可:

this.tblMain.getColumn(0).getStyleAttributes().setNumberFormat("#年");

EAS单据分录的一些初始化设置

// 设定单据分录选择模式为单元格选择模式

kdtEntrys.getSelectManager().setSelectMode(KDTSelectManager.CELL_SELECT);

// 设定支持鼠标拖动表头移动表列

kdtEntrys.setColumnMoveable(true);

EAS设定分录按钮快捷键

// 设定分录按钮快捷键

kdtEntrys_detailPanel.getAddNewLineButton().setMnemonic(KeyEvent.VK_DOWN); kdtEntrys_detailPanel.getRemoveLinesButton().setMnemonic(KeyEvent.VK_UP);

相关文档
最新文档