缩小TableView?

时间:2014-07-17 15:28:38

标签: java javafx-2 javafx-8

如果查看Excel的右下角,您会看到一个缩放滑块。这使您可以缩小正在查看的网格,为视图添加更多行和列。

我希望能够使用TableView在JavaFX中执行相同的操作。我认为这可能只是在TableView上使用scale方法的情况(如下面的代码所示),但这不起作用。 TableView变得更小,但它不会扩展以显示更多的行和列。

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;

public class TableViewZoomTest  extends Application {
    private double scale = 0.8;

    @Override
    public void start(Stage stage) throws Exception {
        GridPane pane = new GridPane();
        Scene scene = new Scene(pane, 500, 500);
        stage.setScene(scene);

        TableView<String> tableView = new TableView<>();
        TableColumn<String, String> tableColumn1 = new TableColumn<>("Column 1");
        tableColumn1.setCellValueFactory(stringStringCellDataFeatures -> new SimpleStringProperty("Hello"));
        tableView.getColumns().addAll(tableColumn1);
        tableView.setItems(FXCollections.observableArrayList("Hello", "Hello", "Hello", "Hello"));

        Button zoomButton = new Button("Zoom");
        zoomButton.setOnAction(actionEvent -> {
            tableView.setScaleX(scale);
            tableView.setScaleY(scale);
            scale -= 0.2;
            if (scale < 0.2) {
                scale = 1.0;
            }
        });

        pane.add(tableView, 0, 0, 1, 1);
        pane.add(zoomButton, 0, 1, 1, 1);

        ColumnConstraints columnConstraints = new ColumnConstraints();
        columnConstraints.setHgrow(Priority.ALWAYS);
        pane.getColumnConstraints().add(columnConstraints);
        RowConstraints row1Constraints = new RowConstraints();
        row1Constraints.setVgrow(Priority.ALWAYS);
        RowConstraints row2Constraints = new RowConstraints();
        pane.getRowConstraints().addAll(row1Constraints, row2Constraints);

        stage.show();
    }

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

我该怎么做?

0 个答案:

没有答案