자바 FX 의 TableView 사용 에 대한 자세 한 설명
다음은 TableView 의 효과 도 를 살 펴 보 겠 습 니 다.
모든 열 은 하나의 TableColumn 입 니 다.우 리 는 직접 만 들 수도 있 고 자바 FX Scene Builder 에서 만 들 수도 있 습 니 다.
TableView 의 데 이 터 를 채 우려 면 Observable List 가 필요 합 니 다.그 중 에는 데이터 충전 을 위 한 클래스 가 필요 합 니 다.
다음은 우리 데이터 가 채 워 진 클래스 를 보 겠 습 니 다.
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleStringProperty;
/**
*
* @author wing
*/
public final class DownloadData {
private final SimpleStringProperty fileName = new SimpleStringProperty();
private final SimpleStringProperty status = new SimpleStringProperty();
private final SimpleStringProperty dlSpeed = new SimpleStringProperty();
private final SimpleDoubleProperty progress = new SimpleDoubleProperty();
private final SimpleStringProperty downloadSize = new SimpleStringProperty();
private final SimpleStringProperty dlPercent = new SimpleStringProperty();
private String uuid;
public DownloadData(String filename, double progress) {
setFileName(filename);
setProgress(progress);
}
public DownloadData(String status, String filename, String dlSpeed, double progress) {
setStatus(status);
setFileName(filename);
setDlSpeed(dlSpeed);
setProgress(progress);
}
/**
* @return the fileName
*/
public String getFileName() {
return fileName.get();
}
/**
* @param fileName the fileName to set
*/
public void setFileName(String fileName) {
this.fileName.set(fileName);
}
public SimpleStringProperty fileNameProperty(){
return fileName;
}
/**
* @return the status
*/
public String getStatus() {
return status.get();
}
/**
* @param status the statusto set
*/
public void setStatus(String status) {
this.status.set(status);
}
public SimpleStringProperty statusProperty(){
return status;
}
/**
* @return the String
*/
public String getDlSpeed() {
return dlSpeed.get();
}
/**
* @param dlSpeed the dlSpeed to set
*/
public void setDlSpeed(String dlSpeed) {
this.dlSpeed.set(dlSpeed);
}
public SimpleStringProperty dlSpeedProperty(){
return dlSpeed;
}
/**
* @return the progress
*/
public double getProgress() {
return progress.get();
}
/**
* @param progress the progress to set
*/
public void setProgress(double progress) {
this.progress.set(progress);
}
public SimpleDoubleProperty progressProperty(){
return progress;
}
public String getDownloadSize() {
return downloadSize.get();
}
public void setDownloadSize(String downloadSize) {
this.downloadSize.set(downloadSize);
}
public SimpleStringProperty downloadSizeProperty(){
return downloadSize;
}
public String getDlPercent() {
return dlPercent.get();
}
public void setDlPercent(String dlPercent) {
this.dlPercent.set(dlPercent);
}
public SimpleStringProperty dlPercentProperty(){
return dlPercent;
}
public String getUUID() {
return uuid;
}
public void setUUID(String uuid) {
this.uuid = uuid;
}
}
데이터 로 채 우 는 클래스 는 자바 FX 의 Property 메커니즘 으로 데이터 바 인 딩 을 할 수 있어 야 Observable List 를 바 꿀 때 TableView 의 데 이 터 를 실시 간 으로 새로 고 칠 수 있다 는 것 을 기억 하 세 요.
private final ObservableList<DownloadData> data
= FXCollections.observableArrayList();
ObservableList<TableColumn> observableList = mDownloadTable.getColumns();
observableList.get(0).setCellValueFactory(new PropertyValueFactory("status"));
observableList.get(1).setCellValueFactory(new PropertyValueFactory("fileName"));
observableList.get(2).setCellValueFactory(new PropertyValueFactory("dlSpeed"));
observableList.get(3).setCellValueFactory(new PropertyValueFactory("downloadSize"));
observableList.get(4).setCellValueFactory(new PropertyValueFactory("progress"));
observableList.get(4).setCellFactory(ProgressBarTableCell.forTableColumn());
observableList.get(5).setCellValueFactory(new PropertyValueFactory("dlPercent"));
mDownloadTable.setItems(data);
우 리 는 TableView.getColumns 를 통 해 TableView 의 모든 열 을 가 져 옵 니 다.CellValue Factory 는 TableView 각 열 에 채 워 진 데 이 터 를 말한다.여기 서 간단하게 Property Value Facotry 를 사용 합 니 다.뒤에 있 는 것 은 DownloadData 의 Property 속성 명 에 대응 해 야 합 니 다.
CellFactory 는 TableView 의 어떤 Cell 의 보기 형식 을 지정 할 수 있 습 니 다.제 가 Progress Bar 를 사용 한 것 을 보 실 수 있 습 니 다.
또한 CellFactory,자바 FX 에 있 는 셀 프 팩 토리,자세 한 것 은 자바 fx.scene.control.cell 패키지 에서 찾 을 수 있 습 니 다.
이 어 다운 로드 데 이 터 를 만 들 고 데 이 터 를 설정 하 며 Observable List 에 추가 하면 됩 니 다.
다음 그림 에서 보 듯 이:
위 는 TableView 의 데이터 충전 입 니 다.
또한 자바 FX 의 이벤트 도 자바 나 안 드 로 이 드 에서 온 아 이 템 클릭 같은 것 으로 어떤 클릭 을 수행 하 는 것 같 지 않다.
자바 FX 의 컨트롤 러 의 많은 이 벤트 는 Property 의 ChangeListener 를 사용 하여 실 행 됩 니 다.
다음 과 같다.
mMenuTree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
mMenuTree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
int index = mMenuTree.getSelectionModel().getSelectedIndex();
switch (index) {
case 1: //
refreshTableData(0, 1, 2);
break;
case 2: //
refreshTableData(0);
break;
case 3: //
refreshTableData(2);
break;
case 4: //
refreshTableData(-1);
break;
}
}
});
여 기 는 TreeView 의 이벤트 로,selectItemProperty 의 변 화 를 감청 하여 해당 하 는 조작 을 합 니 다.마찬가지 로 TableView 도 마찬가지 로 selectXXxperty 속성 을 감청 하여 Item 의 클릭 등 을 조작 합 니 다.퇴근 해 야 하 는데,이 절 은 잠시 여기에 왔 다.
글 에 쓰 이 는 그림 중 일 부 는 최근 할 일이 없 을 때 자바 FX 로 연습 하 는 도구 다.
그러나 자바 FX 업데이트 진도 가 느 려 결국 다른 개발 과 학습 을 계속 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Eclipse에서 javaFX 도입 (2020-4 월)javaSE에 javaFX가 동봉되지 않게 되어, 기존의 방법으로는 잘 되지 않는 것이 있는 것 같고, 도입에 망설였으므로 나중의 참고가 된다고 생각. 초보자이므로 손 부드럽게. macOS Catalina Eclip...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.