我想问一下如何从SWT表的每一列中获取相应的值。我很难得到这个,希望这次您能为我提供帮助。所以我的问题是我有列,我想获取此列的值。附件是我的程序中示例表的屏幕截图
在这种情况下,我想从Column1-Column6(1250、2305、1120、2450、2312、2134)中获取值,并将其总计并存储在 文本框。我还有一个表,其中有一个复选框,当您选中它时,它将自动显示如图所示的值。我试图获取值,但似乎它无法与我拥有的代码一起使用。
TotalItem= 0L;
for (x= 0; x < tblPrice.length; x++) {
for (int y = 0; y < tblPrice[x].getColumnCount(); y++){ //columns
if (tblItems[x].getItem(x).getChecked()) {
TotalItem = TotalItem+ Long.parseLong(tblPrice[x].getItem(y).getText());
}
}
}
答案 0 :(得分:0)
很难说出您正在苦苦挣扎,但我将假设您没有从想要的表中获取值。
您正在调用TableItem#getText()
,它将为您提供该行第一列的值。
如果要在特定的列中获取文本,则必须使用相应的表列索引调用TableItem#getText(int)
。
以下示例应对此进行说明。它显示了一个包含三列的表格,当您单击一个单元格时,它会打印该单元格的值。
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Table table = new Table(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
int cols = 3;
for (int c = 0; c < cols; c++)
{
TableColumn column = new TableColumn(table, SWT.NONE);
column.setText("Column " + c);
}
int rows = 10;
for (int r = 0; r < rows; r++)
{
TableItem item = new TableItem(table, SWT.NONE);
for (int c = 0; c < cols; c++)
{
item.setText(c, r + " " + c);
}
}
for (int c = 0; c < cols; c++)
table.getColumn(c).pack();
table.addListener(SWT.MouseDown, e -> {
Point pt = new Point(e.x, e.y);
TableItem item = table.getItem(pt);
if (item != null)
{
for (int c = 0; c < table.getColumnCount(); c++)
{
Rectangle rect = item.getBounds(c);
if (rect.contains(pt))
{
System.out.println(item.getText(c));
}
}
}
});
shell.pack();
shell.open();
shell.setSize(400, 300);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}