Java SWT: как центрировать содержимое столбца в таблице? - PullRequest
0 голосов
/ 17 сентября 2018

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

Это таблица:

    Table membersTable = new Table(clubComposite, SWT.BORDER | SWT.CHECK | SWT.FULL_SELECTION);
    membersTable.setLinesVisible(true);
    membersTable.setHeaderVisible(true);
    membersTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    TableColumn tblclmnName = new TableColumn(membersTable, SWT.NONE);
    tblclmnName.setWidth(150);
    tblclmnName.setText("Nombre");

    TableColumn tblclmnCommonPhoneNumber = new TableColumn(membersTable, SWT.NONE);
    tblclmnCommonPhoneNumber.setWidth(120);
    tblclmnCommonPhoneNumber.setText("Teléfono");

    TableColumn tblclmnCommonMoney = new TableColumn(membersTable, SWT.NONE);
    tblclmnCommonMoney.setWidth(150);
    tblclmnCommonMoney.setText("Participación Habitual");

    TableColumn tblclmnPayed = new TableColumn(membersTable, SWT.CENTER);
    tblclmnPayed.setWidth(50);
    tblclmnPayed.setText("Pagado"); 

    // populate Table
    for (int i=0; i<50; i++) {
        TableItem tableItem = new TableItem(membersTable, SWT.CENTER);                  
        tableItem.setText(new String[] {"person "+i, "610610620", "100", ""});
        tableItem.setImage(3, uncheckedImage);
    }

Я пытался сделать это:

TableColumn tblclmnPayed = new TableColumn(membersTable, SWT.CENTER);

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

Можно ли достичь моих потребностей на Java SWT?

Спасибо

1 Ответ

0 голосов
/ 17 сентября 2018

Чтобы центрировать содержимое столбца, необходимо указать бит стиля SWT.CENTER для TableItem.

Например:

final Table table = new Table(shell, SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
table.setHeaderVisible(true);
table.setLinesVisible(true);

final TableColumn column1 = new TableColumn(table, SWT.NONE);
column1.setText("Column 1");
column1.setWidth(75);

final TableColumn column2 = new TableColumn(table, SWT.NONE);
column2.setText("Column 2");
column2.setWidth(75);

final TableColumn column3 = new TableColumn(table, SWT.CENTER);
column3.setText("Column 3");
column3.setWidth(75);

for (int i = 0; i < 5; i++) {
    new TableItem(table, SWT.CENTER).setText(new String[] { "a", "b", "c" });
}

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


Правка в отношении центрирования изображения:

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

Одной из альтернатив будет использование слушателя рисования для рисования изображения с правильными отступами для центрирования изображения в столбце (см .: Как выровнять изображение по центру ячейки таблицы (таблица SWT) ).Обратите внимание, что при использовании этого метода размер строки не изменяется в зависимости от размера изображения, поэтому, если ваше изображение не имеет крошечного размера и не совпадает с высотой строки, вам придется проделать дополнительную работу, чтобы сохранить форму изображения обрезанной.

...