2012-07-04 119 views

回答

3

ScrollBar宽度基于ScrollPane的字体大小。

将ScrollPane的字体大小设置为很大,并且(如果需要)将ScrollPane内容节点的字体大小恢复为正常。

ScrollPane scrollPane = new ScrollPane(); 
scrollPane.setContent(content); 
scrollPane.setStyle("-fx-font-size: 40px;"); // set the font size to something big. 
content.setStyle("-fx-font-size: 11px;");  // reset the region's font size to the default. 

这是一个完整的可执行示例,基于我对前面的forum question on the same topic的回答。

import javafx.application.Application; 
import javafx.collections.*; 
import javafx.scene.*; 
import javafx.stage.Stage; 
import javafx.scene.chart.*; 
import javafx.scene.control.ScrollPane; 
import javafx.scene.layout.Region; 

public class BigScrollBars extends Application { 
    @Override public void start(Stage stage) { 
    // create a chart. 
    ObservableList<PieChart.Data> pieChartData = 
     FXCollections.observableArrayList(
     new PieChart.Data("Grapefruit", 13), 
     new PieChart.Data("Oranges", 25), 
     new PieChart.Data("Plums", 10), 
     new PieChart.Data("Pears", 22), 
     new PieChart.Data("Apples", 30) 
    ); 
    final PieChart chart = new PieChart(pieChartData); 
    chart.setTitle("Imported Fruits"); 
    chart.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE); 
    chart.setPrefSize(800,600); 

    // create a scrollpane. 
    ScrollPane scrollPane = new ScrollPane(); 
    scrollPane.setContent(chart); 
    scrollPane.setStyle("-fx-font-size: 40px;"); // set the font size to something big. 
    chart.setStyle("-fx-font-size: 11px;");  // reset the region's font size to the default. 

    // show the scene. 
    stage.setScene(new Scene(scrollPane, 400, 300)); 
    stage.show(); 
    } 

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

以下解决方案为我工作:

​​