日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了為了使用TableView,是否需要為每個數據庫查詢創建類?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在過去的幾天里,我學習了一些關于JavaFX的教程,解釋如何使用TableView?每個教程都為example創建了類似Person的DataModel對象。只要您只需要像select Firstname, Lastname from Person這樣的SQL語句就可以了。

但是,如果您不想為每個SELECT查詢創建數據模型,因為您出于某種原因將數據與其他對象聯接起來,該怎么辦呢?例如,select * from Person join City join Country。前幾天我學到的是,如果創建一個只包含List(表示行)的表視圖,處理格式甚至計算表視圖都會變得很糟糕。

這真的是JavaFX的事情嗎?還是我錯過了什么?

更新

為了更清楚,請參閱question。我是在閱讀對我的問題的回答和評論后首次發現此問題的,但我對鏈接問題的答案不滿意。

SQL

您的問題在這里混淆了兩個概念:一方面是javafx.scene.control.TableView,另一方面是推薦答案/ORM。讓我們忘掉SQL查詢,比如我認為您最關心的是TableView

TableView必須填充List。此列表的內部類型必須與TableView的泛型類型匹配。因此,例如TableView<Person>將使用List<Person>填充。

除此之外,表示行的對象的實際類型可以是任何類型。它甚至不必包含數據本身,或者它可以是一個Map<String, Object>。在本例中,您將通過為每一列定義一個CellValueFactory來將該行的鍵映射到每一列,該CellValueFactory將返回您選擇的鍵的入口值。

然后,您可以通過為列定義CellFactory將此值轉換為String和/或Node

具有JavaFX屬性的對象可以更容易地映射,因為存在僅需要屬性名稱的預制PropertyValueFactory。但它們并不是唯一的出路。

為每行使用Map<String, Object>的示例:

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javafx.application.Application;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class App extends Application {

  private TableView<Map<String, Object>> tableView;
  private TableColumn<Map<String, Object>, String> nameCol;
  private TableColumn<Map<String, Object>, Integer> ageCol;
  
  private Stage stage;

  @Override
  public void start(Stage stage) {
    this.stage = stage;

    //Insert a TableView into scene
    this.tableView = new TableView<>();
    this.nameCol = new TableColumn<>("Name");
    this.nameCol.setPrefWidth(250);
    ageCol = new TableColumn<>("Age");
    tableView.getColumns().add(nameCol);
    tableView.getColumns().add(ageCol);
    
    nameCol.setCellValueFactory(param -> {
      Map<String, Object> v = param.getValue();
      return new SimpleStringProperty(v == null ? null : (String) v.get("name"));
    });
    
    ageCol.setCellValueFactory(param -> {
      Map<String, Object> v = param.getValue();
      return new SimpleObjectProperty<Integer>(v == null ? null : (Integer) v.get("age"));
    });
    ageCol.setCellFactory(param -> {
      return new TableCell<>() {
        @Override
        public void updateItem(Integer item, boolean empty) {
          if (empty || item == null)
            super.setText("");
          else
            super.setText(NumberFormat.getIntegerInstance().format(item));
          //Could also call setGraphic(Node)
        }
      };
    });
    
    final Scene scene = new Scene(new BorderPane(tableView), 640, 480);

    stage.setScene(scene);
    stage.setOnShown(event -> stageReady()); //Continue when stage is rendered
    stage.show();
  }

  private void stageReady() {
    //Generate data
    List<Map<String, Object>> data = new ArrayList<>();
    Map<String, Object> obj1 = new HashMap<>();
    obj1.put("name", "Name of Object 1");
    obj1.put("age", 42);
    data.add(obj1);
    Map<String, Object> obj2 = new HashMap<>();
    obj2.put("name", "OBJECT 2");
    obj2.put("age", 53);
    data.add(obj2);
    //Show data
    tableView.getItems().setAll(data);
  }

  public static void main(String[] args) {
    launch();
  }

}

ageCol.setCellFactory僅用于演示。如果我沒有設置它,則Integer單元格將呈現為調用Integer.toString()單元格text屬性。

這篇關于為了使用TableView,是否需要為每個數據庫查詢創建類?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:TableView 創建 數據庫 查詢
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定