首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调整JavaFX上画布的大小以适应大小

如何调整JavaFX上画布的大小以适应大小
EN

Stack Overflow用户
提问于 2015-04-27 21:41:44
回答 1查看 3.3K关注 0票数 2

我是JavaFX新手,我遇到了调整画布大小的问题。我正在努力使画布尺寸与我放置在里面的内容完全吻合。输出应该是唯一的片段5/7,但是在我画的数字旁边有很多空白。我尝试使用setWidth调整画布的大小,甚至从一开始就将画布设置为小尺寸,但似乎没有任何帮助。

这是我的代码:

代码语言:javascript
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;

public class Example extends Application {

    Font fontLarge = Font.font("Droid Sans", FontWeight.BOLD, 15);

    @Override
    public void start(Stage stage) {

        HBox root = new HBox();
        Scene scene = new Scene(root);

        root.getChildren().add(getCanvasOfRationalNumber("5", "7"));
        scene.setRoot(root);
        stage.setScene(scene);
        stage.show();
    }

    public Canvas getCanvasOfRationalNumber(String num, String denom) {
        final Canvas rnCanvas = new Canvas(300, 55);
        GraphicsContext gc = rnCanvas.getGraphicsContext2D();
        gc.setFont(fontLarge);

        gc.fillText(num, 0, 15);
        gc.fillText("___", 0, 20);
        gc.fillText(denom, 0, 40);

        rnCanvas.setWidth(15);
        return rnCanvas;
    }

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

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 22:06:26

编辑:我以前的答案是错的,这是新的答案。

我们需要澄清你到底想要什么。如果我现在正确理解了,那么您想要的是窗口大小本身并不比画布大小大。

正如珠宝海在评论中指出的,你可以改变画布的宽度和高度。实际上,您已经在代码中这样做了。

我建议你为画布和场景选择不同的颜色。如果你这样做的话,例如:

代码语言:javascript
复制
public class Example extends Application {

    Font fontLarge = Font.font("Droid Sans", FontWeight.BOLD, 15);

    @Override
    public void start(Stage stage) {

        HBox root = new HBox();
        Scene scene = new Scene(root, Color.YELLOW);

        root.getChildren().add(getCanvasOfRationalNumber("5", "7"));
        scene.setRoot(root);
        stage.setScene(scene);
        stage.show();
    }

    public Canvas getCanvasOfRationalNumber(String num, String denom) {
        final Canvas rnCanvas = new Canvas(300, 55);
        GraphicsContext gc = rnCanvas.getGraphicsContext2D();
        gc.setFont(fontLarge);

        gc.setFill(Color.LIGHTBLUE);
        gc.fillRect(0, 0, 300, 55);

        gc.setFill(Color.BLUE);

        gc.fillText(num, 0, 15);
        gc.fillText("___", 0, 20);
        gc.fillText(denom, 0, 40);

        rnCanvas.setWidth(15);
        return rnCanvas;
    }

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

}

你会得到这个的

你可以清楚地看到画布已经调整了尺寸。你面临的问题是窗户不能变小。这是场景中的白色(或黄色)空间,而不是画布上的空间。您可以尝试将宽度设置为1,将高度设置为1,但最终还是会得到以下结果:

我的猜测是,由于min/max/关闭按钮,窗口大小不能变小。您可以使用initStyle方法更改样式以去掉按钮。

这一切都取决于你的需求。

旧(错)答案:

不能修改画布的宽度/高度。

画布是一种可以使用GraphicsContext提供的一组图形命令绘制的图像。 画布节点的宽度和高度指定呈现画布绘图命令的图像的大小。所有绘图操作都被裁剪到该图像的边界。

您的解决方案要么是将画布区域复制到另一个大小的新画布上,要么根本不使用画布,而是使用文本节点。但这都取决于你的要求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29906483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档