楼主 admin 发表于2010-9-3 15:45:13
奇新Java电子表格控件常见问题

奇新Java电子表格控件常见问题


问:请问如何使用授权码?

答:您可以在程序菜单 帮助 -> 关于 对话框中添入此授权码.

您可以用下边的代码在您的程序用注册授权码:

// the code means the above license data

LicenseManager.getInstance().addLicenseData(code); 

问:怎样隐藏黑色的单元格边框? 

答:用下边的代码关闭单元格边框:

dataGrid.setSelectionBorderPainted(false);

问:如何在JDataGrid中启用栏排序,也就是点击栏头进行排序? 

答:可以通过下边的代码启用JDataGrid的栏排序功能

dataGrid.setModel(new DefaultColumnSorter(createModel()));

dataGrid.putClientProperty("JDataGrid.columnSortingEnabled", Boolean.TRUE);

dataGrid.putClientProperty("JDataGrid.switchUnsortedOrderEnabled", Boolean.TRUE);

应该使用JDataGrid内建的JTableHeader.  

问:为什么启用栏排序后栏头不能显示排序小图标? 

答:应该使用JDataGrid内建的JTableHeader,默认的JTableHeader在早期的JDK版本中不支持栏排序。  

问:如何启用打印预览的彩色效果? 

答:JPrintPreview提供了支持彩色效果的方法:

JPrintPreview.setColorType(JPrintPreview.COLOR); 

问:为什么在JDataGrid中添加TableColumn会出错呢? 

答:请使用DefaultDataGridModel.addColumn(null)添加新的栏。  

问:怎样设置AComboBox控件文本左对齐? 

答:可以直接使用包com.zfqjava.swing.cell中的ObjectCellRenderer的类,它有方法:

setDefaultHorizontalAlignment 

问:怎样设置一个Renderer,使用MM/DD/YYYY格式化输出日期类型的值?

答:可以直接创建一个DateCellRenderer,将
new SimpleDateFormat("MM/dd/yyyy")作为参数传入构造函数。  

问:如何使JDataGrid的栏宽自动适应栏内容? 

答:使用JDataGrid.sizeColumnWidthToFit方法可以调整指定栏的宽度,使其适应栏内容。  

问:JDataGrid的公式不能在OpenOffice中正常使用,怎样修改代码? 

答:我们在最新的JDataGrid中提供了这项功能,您可以直接设置属性,就可以实现OpenOffice公式的解析。

问:JDataGrid如何在排序的状态下隔行显示不同的颜色? 

答:JDataGrid提供了直接隔行显示不同颜色的功能,使用下边的代码:

dataGrid.setAlternatingRowBackground(Color.gray);

dataGrid.setAlternatingRowForeground(Color.white); 

问:如何在JDataGrid控件栏头显示复选框? 

答:使用下边的代码可启用这个功能:

JDataGrid dataGrid = getDataGrid();

BooleanCellRenderer renderer = new BooleanCellRenderer();

renderer.setComponentType(BooleanCellRenderer.CHECK_BOX);

// gloablly enable the check box renderer

// dataGrid.getTableHeader().setDefaultRenderer(renderer);

dataGrid.getColumnModel().getColumn(0).setHeaderRenderer(renderer); 

问:JDataGrid控件是否可能阻止单个栏移动? 

答:这个功能可以通过写一个TableColumnModel来实现,在自己写的TableColumnModel 中覆盖下边的方法:

TableColumn firstColumn = new TableColumn(0);

// override the method in TableColumnModel

public TableColumn getColumn(int columnIndex) {

 if(columnIndex == 0) {

  return firstColumn;

 } else {

  return super.getColumn(columnIndex);

 }

}  

问:怎样设置JDataGrid可以允许单元格类型互相转换? 

答:使用下边的代码:

dataGrid.setEditingStopBehavior(JDataGrid.COMMIT_OR_EDITING); 

问:怎样在不使用JDataGrid控件的情况下让DataGridModel输出的xls文件指定特定的行高? 

答:使用下边的代码:

WorkSheet[] sheets = new WorkSheet[1];

sheets[0] = new WorkSheet("sheet0", tableModel);

 

// 添加下列代码:

SizeModel rowSizeModel = new DefaultSizeModel("row model",

tableModel.getRowCount(), 16);

rowSizeModel.setSize(0, 30);

sheets[0].setRowSizeModel(rowSizeModel);

 

WorkBook book = new WorkBook(sheets);

ModelIO.writeWorkBook(book, "xls", null, f);