以下是在表格中创建单选按钮的代码
public class RadioButtonRender extends CellRenderer {
protected String name;
protected String[] value;
public RadioButtonRender(Cell modelElement, String name, String[] value) {
super(modelElement);
this.name = name;
this.value = value;
}
@Override
public void draw(DrawContext drawContext) {
PdfAcroForm form = PdfAcroForm.getAcroForm(drawContext.getDocument(), true);
PdfButtonFormField group = PdfFormField.createRadioGroup(drawContext.getDocument(), "", "");
float x = getOccupiedAreaBBox().getLeft();
float y = (getOccupiedAreaBBox().getTop() + getOccupiedAreaBBox().getBottom()) / 2;
System.out.println(x + " " + y);
for (int i = 0; i < this.value.length; i++) {
Rectangle rect = new Rectangle(x, y, 10, 10);
PdfFormField.createRadioButton(drawContext.getDocument(), rect, group,
this.value[i]);
}
form.addField(group);
}
}
这是我调用RadioButtonRender并将该单元格添加到表中的代码,但不知道单选按钮没有添加到表中但是复选框,文本字段工作正常
cell.setNextRenderer(
new RadioButtonRender(cell, entry.getString(), values.toArray(new String[values.size()])));
table.addCell(cell);
我确定我没有在值列表中发送任何空值,所以这可能不是问题。
答案 0 :(得分:0)
您没有看到结果的主要原因是您没有设置无线电组的名称及其值。无线电组管理其子单选按钮的状态,这应该具有初始值。它也必须有一个名字。
将创建广播组的行更改为
PdfButtonFormField group = PdfFormField.createRadioGroup(drawContext.getDocument(), "fieldName", this.value[0]);
您将看到现在选择了一个单选按钮(显示黑色圆圈)。请注意,传递值不是必需的,但如果您没有传递初始值,则最初不会选择单选按钮。
此外,for
循环内的坐标与循环i
变量无关,您可以将所有单选按钮一个绘制在另一个上面。
最后,您可能希望在按钮附近绘制一些内容以指示其值。例如。您可以将该内容添加到单元格中并调用super.draw(drawContext);
。