자바 FX 의 TableView 사용 에 대한 자세 한 설명

7354 단어 JavaFXTableView
TableView 는 매우 중요 한 컨트롤 이 라 고 할 수 있 고 거의 어디서나 볼 수 있 으 며 기능 이 강하 고 데이터 전시 효과 가 좋 습 니 다.그래서 자바 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 업데이트 진도 가 느 려 결국 다른 개발 과 학습 을 계속 할 수 있다.

좋은 웹페이지 즐겨찾기