Как получить значения столбцов в Java SWT Table - PullRequest
0 голосов
/ 05 декабря 2018

Я хотел бы спросить, как получить соответствующие значения из каждого столбца из таблицы SWT.У меня тяжелое время, чтобы получить этот, я надеюсь, что вы можете помочь мне в этот раз.Поэтому моя проблема в том, что у меня есть столбцы, и я хочу получить значения этих столбцов.Прикрепленный здесь снимок экрана с образцом таблицы в моей программе

enter image description here

В этом случае я хочу получить значения из 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());
                }
            } 
        }

1 Ответ

0 голосов
/ 07 декабря 2018

Трудно сказать, с каким битом вы боретесь, но я собираюсь предположить, что вы не получаете значение из таблицы, которую хотите.

Вы звоните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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...