首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX:如何使用GraphicsContext.fillText?

JavaFX:如何使用GraphicsContext.fillText?
EN

Stack Overflow用户
提问于 2020-10-16 15:27:59
回答 1查看 274关注 0票数 0

因此,我尝试在我的JavaFX应用程序中创建一个自定义节点,它从Canvas扩展而来,因此它自己完成所有的呈现。我从简单地尝试绘制文本"Hello world“开始。虽然我可以通过鼠标事件处理程序确认应用程序中自定义节点的存在,但遗憾的是它没有出现。

代码语言:javascript
复制
public class EditorFragment extends Canvas {
    public EditorFragment() {
        super(100, 30);
        this.render(this.getGraphicsContext2D());
        this.addEventFilter(MouseEvent.MOUSE_CLICKED, mouseEvent -> {
            System.out.println("Mouse event occurred in fragment.");
            System.out.println(mouseEvent.toString());
        });
        this.setOnMouseMoved(mouseEvent -> {
            System.out.println("Mouse moved over fragment.");
        });
    }

    protected void render(GraphicsContext gc) {
        gc.setFill(Color.BLACK);
        gc.fillText("Hello world.", 0, 0);
    }
}

简而言之,如果我将这个EditorFragment的一个新实例添加到一个Pane中,我知道它已经被添加了,如果我调用gc.fillRect(...),我会看到一个矩形,显示节点的位置和大小,但不显示文本。为什么?

EN

回答 1

Stack Overflow用户

发布于 2020-10-16 15:37:41

显然,经过进一步的搜索,我发现文本实际上是在绘制的,但0, 0通常对应于文本的左下角,所以它是在画布上绘制的。为了解决这个问题,我将render方法更改为以下内容:

代码语言:javascript
复制
    protected void render(GraphicsContext gc) {
        gc.setFill(Color.BLACK);
        gc.setTextAlign(TextAlignment.LEFT);
        gc.setTextBaseline(VPos.CENTER);
        gc.fillText("Hello world.", 0, this.getHeight() / 2);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64384714

复制
相关文章

相似问题

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