我的目标是通过解析XML文件来显示表。
我正在使用SAX Parser,内容有 multirows ,我想要 表宽度适合到显示屏。当然Y_AXIS滚动就可以了。
现在,我正在使用src / com / sun / lwuit / html /的 HTMLTableModel ,而且它是相应的 HTMLTable 。为此我宣布它的方法公开,所以我可以访问它们。这到目前为止工作正常。这允许我在不知道其大小的情况下声明表格。
为了允许多行,我将TextAreas嵌入到单元格中。
现在出现问题:HTMLTable需要t.setScrollableY(true)
,否则不会显示所有行。
这会导致表格在X方向上有点大,因此不显示右边框。 底部边框也不会一直显示。
嵌入表格的容器包含 BorderLayout.Y_AXIS 。
我试过的事情:
t.setPreferredW(mainContainer.getLayoutWidth());
这确实减少了表的大小,但是表格没有显示所有行,例如没有t.setScrollableY(true).
t.setLayout(new BoxLayout(BoxLayout.Y_AXIS))
这会导致java/lang/ClassCastException
。
有什么想法吗?提前谢谢。
摘自我的代码:
} else if (qName.equalsIgnoreCase("td")) {
if (sb.length() > 0) {
String sbt = new String(sb);
sb.delete(0, sb.length());
TextArea c = new TextArea(sbt);
c.setEditable(false);
c.getStyle().setFont(smallFont);
table.addCell(c, false, null);
}
} else if (qName.equalsIgnoreCase("tr")) {
debugPrint("Row closed.");
table.commitRow();
} else if (qName.equalsIgnoreCase("table")) {
HTMLTable t = new HTMLTable(table);
//without scrollable Y not all table rows are shown
t.setScrollableY(true);
//t.setPreferredW(screenWidth);
//this is verboten.
t.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
mainContainer.addComponent(t);
tableBool = false;
答案 0 :(得分:1)
您不能从表格布局更改表格的布局,否则它不会是表格。
应该可以让表格填充父BoxLayout_Y的宽度,方法是将表格列的宽度百分比分配到100%,例如对于3列表返回分配33,33& 44。
这可以通过继承table并覆盖方法来实现:
protected TableLayout.Constraint createCellConstraint(Object value, int row, int column) {
TableLayout.Constraint c = super.createCellConstraint(value, row, column);
c.setWidthPercentage(whateverYouWant);
return c;
}