본문 바로가기
Eclipse RCP

SWT Table Widget

by jayden-lee 2019. 4. 7.
728x90

Table Widget

테이블 위젯은 엑셀에서 볼 수 있는 형태와 유사하다. 각 항목을 여러 셀로 구성된 행 하나에 출력하고, 여러 열을 세로로 나열한다. 테이블의 열은 TableColumn으로 정의하며 옵션에 따라 헤더, 폭, 정렬방식을 정의할 수 있다.

Table Widget 예제

public class TableExample {

    public static void main(String[] args) {
        Display display = new Display();

        Shell shell = new Shell(display);
        shell.setText("Table Example");
        shell.setBounds(100, 100, 350, 200);
        shell.setLayout(new FillLayout(SWT.VERTICAL));

        /**
         * Table 위젯의 스타일 종류<br>
         * 
         * SWT.SINGLE : 단일 선택 테이블<br>
         * SWT.MULTI : 다중 선택 테이블<br>
         * SWT.CHECK : 체크박스 테이블<br>
         * SWT.FULL_SELECTION : 셀 단위가 아닌 행 단위로 선택하는 테이블
         */
        final Table studentTable = new Table(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
        studentTable.setHeaderVisible(true);
        studentTable.setLinesVisible(true);

        final Label textLabel = new Label(shell, SWT.BORDER | SWT.CENTER);

        // 테이블 컬럼 생성
        TableColumn studentTableNameColumn = new TableColumn(studentTable, SWT.NONE);
        studentTableNameColumn.setText("이름");

        TableColumn studentTableAgeColumn = new TableColumn(studentTable, SWT.NONE);
        studentTableAgeColumn.setText("나이");

        // 테이블 아이템(데이터)
        TableItem tableItem1 = new TableItem(studentTable, SWT.NONE);
        tableItem1.setText(new String[] { "이광기", "28"});

        TableItem tableItem2 = new TableItem(studentTable, SWT.NONE);
        tableItem2.setText(new String[] { "서성현", "28"});

        TableItem tableItem3 = new TableItem(studentTable, SWT.NONE);
        tableItem3.setText(new String[] { "이지은", "25"});

        // pack 메서드는 열의 크기를 출력 내용의 최대 크기로 설정한다
        studentTableNameColumn.pack();
        studentTableAgeColumn.pack();

        studentTable.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                TableItem[] selectedTableItems = studentTable.getSelection();
                if (selectedTableItems.length > 0) {
                    StringBuilder stringBuilder = new StringBuilder();
                    for (TableItem tableItem : selectedTableItems) {
                        stringBuilder.append("이름 : " + tableItem.getText(0) + " 나이 : " + tableItem.getText(1) + "\n");
                    }

                    textLabel.setText(stringBuilder.toString());
                } else {
                    textLabel.setText("");
                }
            }
        });

        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }

        display.dispose();
    }
}

SWT Table 예제

'Eclipse RCP' 카테고리의 다른 글

Eclipse Framework Eclipse 4 테마 변경 기능  (0) 2019.04.07
SWT Tree Widget  (0) 2019.04.07
SWT Button Widget  (0) 2019.04.07
Active Page에서 View 가져오기  (0) 2019.04.07
Eclipse RCP 윈도우 크기와 위치 저장  (0) 2019.04.07

댓글