gpt4 book ai didi

java - 在 JavaFX 中的选项卡中实现绘图区域

转载 作者:行者123 更新时间:2023-11-30 08:19:17 25 4
gpt4 key购买 nike

我想在 JavaFX 中的选项卡中添加一个绘图区域。我是该领域的新手,并尝试向我创建的每个选项卡添加 Canvas 。然而,这似乎不起作用。包含相关代码。

@FXML
void fileNewTabHandler(ActionEvent event) {
++indexTab;
Tab tab = new Tab("Untitled " + indexTab);
Canvas canvas = new Canvas(500, 285);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.BLUE);
gc.fillRect(250, 856, 50, 60);
tab.setContent(canvas);
tabPane.getTabs().add(tab);
}

这里 tabPane 和 indexTab 被定义并且只要我不使用 Canvas 就可以工作。我哪里错了。我应该使用不同的方法来实现我想要的吗?

最佳答案

快速示例

这没有什么真正的技巧,您只需将 Canvas 设置为选项卡的内容即可。

tab sample

import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.canvas.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

import java.util.Random;

public class TabbedCanvas extends Application {

private int tabId = 0;
private double W = 200, H = 150;

private Random random = new Random(42);

@Override
public void start(Stage stage) {
TabPane tabPane = new TabPane();

Button newTabButton = new Button("New Tab");
newTabButton.setOnAction(
event -> addTab(tabPane)
);
newTabButton.fire();

ToolBar toolBar = new ToolBar(newTabButton);
toolBar.setMinHeight(ToolBar.USE_PREF_SIZE);

VBox layout = new VBox(toolBar, tabPane);
VBox.setVgrow(tabPane, Priority.ALWAYS);
stage.setScene(new Scene(layout));
stage.show();
}

private void addTab(TabPane tabPane) {
Tab tab = new Tab("Tab: " + tabId++);
tab.setContent(createTabContent());
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);
}

private Node createTabContent() {
Canvas canvas = new Canvas(W, H);

GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(randomColor());
gc.fillRect(0, 0, W, H);

return canvas;
}

private Color randomColor() {
return Color.rgb(
random.nextInt(256),
random.nextInt(256),
random.nextInt(256)
);
}

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

关于java - 在 JavaFX 中的选项卡中实现绘图区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com