如果查看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);
}
}
我该怎么做?