본문 바로가기
Eclipse RCP

SWT Tree Widget

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

Tree Widget

트리 위젯은 계층적인 정보를 출력할 때 많이 사용한다. 트리는 부모와 자식 항목으로 구성되며, 자식 항목은 자신의 하위 항목을 가질 수 있다. 그리고 사용자는 항목을 보이게 하거나 숨길 수 있다.

Tree Widget 예제

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

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

        /**
         * Tree 위젯 스타일 종류<br>
         * SWT.SINGLE : 단일 선택 트리 위젯<br>
         * SWT.MULTI : 다중 선택 트리 위젯<br>
         * SWT.CHECK : 체크박스 트리 위젯
         */
        final Tree treeWidget = new Tree(shell, SWT.MULTI);
        final Label textLabel = new Label(shell, SWT.BORDER | SWT.CENTER);

        for (int i = 1; i < 5; i++) {
            TreeItem grandParentTreeItem = new TreeItem(treeWidget, SWT.NONE);
            grandParentTreeItem.setText("Grand Parent - " + i);
            for (int j = 1; j < 5; j++) {
                TreeItem parentTreeItem = new TreeItem(grandParentTreeItem, SWT.NONE);
                parentTreeItem.setText("Parent - " + j);
                for (int k = 1; k < 5; k++) {
                    TreeItem childTreeItem = new TreeItem(parentTreeItem, SWT.NONE);
                    childTreeItem.setText("Child - " + k);
                }
            }
        }

        treeWidget.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                TreeItem[] selectedTreeItem = treeWidget.getSelection();
                if (selectedTreeItem.length > 0) {
                    StringBuilder stringBuilder = new StringBuilder();
                    stringBuilder.append("[Selected]\n");
                    for (TreeItem treeItem : selectedTreeItem) {
                        stringBuilder.append(treeItem.getText() + "\n");
                    }
                    textLabel.setText(stringBuilder.toString());
                } else {
                    textLabel.setText("");
                }
            }
        });

        shell.open();

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

        display.dispose();
    }
}

SWT Tree 예제

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

Eclipse 4 Command와 단축키 설정 및 메타문자 종류  (0) 2019.04.07
Eclipse Framework Eclipse 4 테마 변경 기능  (0) 2019.04.07
SWT Table Widget  (0) 2019.04.07
SWT Button Widget  (0) 2019.04.07
Active Page에서 View 가져오기  (0) 2019.04.07

댓글