Java/순수 Java

[Java] SWT Table Checkbox 상태 확인하는 방법

기은P 2020. 5. 11. 10:58
반응형

[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개 아이템으로 줄었다.

반응형