2

TableView には組み込みのスクロール バーがありますが、垂直スクロール バーが表示されないのはなぜですか?

TableView を HBox に配置したときのコードは次のとおりです。

HBox HBox_tabelDatabase = new HBox();
                HBox_tabelDatabase.setAlignment(Pos.TOP_CENTER);
                HBox_tabelDatabase.setPadding(new Insets(5,5,5,5));
                HBox_tabelDatabase.setStyle(  "-fx-border-style: solid;"
                + "-fx-border-width: 1;"
                + "-fx-border-color: #ADDFFF;"
                + "-fx-accent: #ADDFFF;"
                + "-fx-accent: #ADDFFF;"
               + "-fx-base:  #ADDFFF;"
                + "-fx-background: white;"
                + "-fx-control-inner-background: white;"
                + "-fx-focus-color: #ADDFFF;"
                + "-fx-dark-text-color: deepskyblue;"
                + "-fx-mid-text-color: black;"
                + "-fx-light-text-color: blue;");

Tab tab6 = new Tab();

HBox_tabelDatabase.getChildren().add(tableview);
HBox_tabelDatabase.setPrefHeight(200);

tab6.setText("Tabel Database");
tab6.setContent(HBox_tabelDatabase);

TableView とその列と行を定義するコードは次のとおりです。

private void buildData(){
          Connection c ;
          data = FXCollections.observableArrayList();
          try{
            c = DBConnect.connect();
            //SQL FOR SELECTING ALL OF APP.tabelJembatan
            String SQL = "SELECT * from APP.tabelJembatan";
            //ResultSet
            ResultSet rs = c.createStatement().executeQuery(SQL);

            /**********************************
             * TABLE COLUMN ADDED DYNAMICALLY *
             **********************************/
            for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
                //We are using non property style for making dynamic table
                final int j = i;                
                TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));
                col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                    
                    public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {                                                                                              
                        return new SimpleStringProperty(param.getValue().get(j).toString());                        
                    }                    
                });

                tableview.getColumns().addAll(col); 
                col.setMinWidth(200);
                System.out.println("Column ["+i+"] ");
            }

            /********************************
             * Data added to ObservableList *
             ********************************/
            while(rs.next()){
                //Iterate Row
                ObservableList<String> row = FXCollections.observableArrayList();
                for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
                    //Iterate Column
                    row.add(rs.getString(i));
                }
                System.out.println("Row [1] added "+row );
                data.add(row);

            }

            //FINALLY ADDED TO TableView
            tableview.setItems(data);
          }catch(Exception e){
              e.printStackTrace();
              System.out.println("Error on Building Data");             
          }

画像: TableView の垂直スクロール バーが表示されない

TableView の垂直スクロール バーが表示されない

次に、TableView を ScrollPane に配置しようとしましたが、データを垂直方向にスクロールするとヘッダーも移動します。つまり、ヘッダーはその位置にとどまりませんでした。私はこのコードを使用しました:

ScrollPane scrollpane1 = new ScrollPane(); 
scrollpane1.setContent(tableview);

画像:縦スクロールするとヘッダーも動く

縦スクロールするとヘッダーも動く

垂直にスクロールしているときに、最初の行 (ヘッダー) をその位置にとどめる方法はありますか?

4

0 に答える 0