반응형
[Java] SWT Table Checkbox 상태 확인하는 방법
1. Table 컴포넌트를 먼저 생성한다.
Table monitorTable = new Table(composite, SWT.BORDER | SWT.CHECK | SWT.FULL_SELECTION | SWT.MULTI);
// 테이블 컬럼 설정
TableColumn tblclmnIndex = new TableColumn(monitorTable, SWT.NONE);
tblclmnIndex.setWidth(50);
tblclmnIndex.setText("인덱스");
TableColumn tblclmnProcess = new TableColumn(monitorTable, SWT.NONE);
tblclmnProcess.setWidth(200);
tblclmnProcess.setText("프로세스");
TableColumn tblclmnStatus = new TableColumn(monitorTable, SWT.NONE);
tblclmnStatus.setWidth(50);
tblclmnStatus.setText("상태");
보통 Table을 사용할 때의 SWT 속성으로는 SWT.None을 사용하지만, 체크박스 기능을 추가하려면 위와 같이 CHECK, FULL_SELECTION, MULTI 같은 속성을 사용하겠다고 명시를 해주어야 한다.
2. Table Item을 추가한다.
public void addTableItem() {
boolean status = false;
try {
status = mbeanModel.getProcessStatus(txtProcessName.getText());
} catch (Exception ex) {
ex.printStackTrace();
status = false;
}
System.out.println(status);
monitorIndex += 1;
TableItem item = new TableItem(monitorTable, SWT.INSERT);
item.setText(0, Integer.toString(monitorIndex));
item.setText(1, txtProcessName.getText());
// item.setImage(1, ModelFunction.getImageToConnectableModel(model.getSourceModel()));
item.setText(2, String.valueOf(status));
// item.setImage(2, ModelFunction.getImageToConnectableModel(model.getTargetModel()));
}
setImage에 주석이 달린 것은 아이콘을 추기하기 위함이었는데 굳이 사용할 필요가 없어서 주석으로 대체했다.
인덱스와 ProcessName의 이름, status의 상태 값, 총 3개의 컬럼에 item.setText로 추가했다.
3. 체크 박스가 선택된 아이템을 삭제하는 기능이다.
/**
* 체크박스 선택된 아이템 삭제
*/
public void deleteTableItem() {
for(int i = 0 ; i<monitorTable.getItems().length;i++) {
TableItem item = monitorTable.getItem(i);
if (item.getChecked() == true) {
monitorTable.remove(i);
i--;
}
monitorTable.redraw();
}
}
체크박스를 확인하는 방법은 의외로 간단하다.
처음엔 listener를 등록해서 별도의 맵을 만들어서, 어쩌구 저쩌구... 할 뻔하다가
item.getChecked()로 테이블 아이템이 체크박스에 선택이 되어있는지 아닌지를 확인 할 수 있었다.
마지막 redraw()는 있어도 되고 없어도 된다. (지웠으면 다시 그려야 할 것 같아서 의미심장해서 넣었음)
4. 실행 결과
중간에 있는 3,4를 지워서 5개의 아이템이 총 3개 아이템으로 줄었다.
반응형
'Java > 순수 Java' 카테고리의 다른 글
[Java] Java Cpu 사용량, 메모리 사용량, 디스크 사용량 구하기 (3) | 2020.05.12 |
---|---|
[Java] n번째 소숫점 자리 출력 (0) | 2020.05.11 |
[Java] Eclipse 텍스트 더블 클릭시 하이라이트 유지하는 방법 (0) | 2020.04.07 |
[Java] Java Project에 Maven 설치(컨버트) (0) | 2020.03.19 |
[Java] Java Bean이란? (0) | 2020.03.16 |