JavaFX技巧1:可调整大小的Canvas
在使用FlexGanttFX时,我不得不处理很多JavaFX Canvas节点。 我正在使用它在时间轴上呈现活动。 甘特图中的每一行都是一个Canvas节点。 用户可以选择单独调整每行的大小。 因此,我不得不找出调整画布大小的最佳方法,这种现成的方法无法调整大小。 下面的清单显示了如何实现此目的。
所需的主要步骤是:
- 创建Canvas的子类。
- 重写isResizable()方法并返回true。
- 重写prefWidth()和prefHeight()方法。 返回Canvas.getWidth()和Canvas.getHeight()的值。
- 将侦听器添加到“ 画布”的width和height属性中,以便在画布大小更改时触发重绘。
- 将“画布”的width和height属性绑定到父窗格的width和height属性。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;/*** Tip 1: A canvas resizing itself to the size of* the parent pane.*/
public class Tip1ResizableCanvas extends Application {class ResizableCanvas extends Canvas {public ResizableCanvas() {// Redraw canvas when size changes.widthProperty().addListener(evt -> draw());heightProperty().addListener(evt -> draw());}private void draw() {double width = getWidth();double height = getHeight();GraphicsContext gc = getGraphicsContext2D();gc.clearRect(0, 0, width, height);gc.setStroke(Color.RED);gc.strokeLine(0, 0, width, height);gc.strokeLine(0, height, width, 0);}@Overridepublic boolean isResizable() {return true;}@Overridepublic double prefWidth(double height) {return getWidth();}@Overridepublic double prefHeight(double width) {return getHeight();}}@Overridepublic void start(Stage stage) throws Exception {ResizableCanvas canvas = new ResizableCanvas();StackPane stackPane = new StackPane();stackPane.getChildren().add(canvas);// Bind canvas size to stack pane size.canvas.widthProperty().bind(stackPane.widthProperty());canvas.heightProperty().bind(stackPane.heightProperty());stage.setScene(new Scene(stackPane));stage.setTitle("Tip 1: Resizable Canvas");stage.show();}public static void main(String[] args) {launch(args);}
}
运行时,您应该看到以下内容:
翻译自: https://www.javacodegeeks.com/2014/04/javafx-tip-1-resizable-canvas.html
JavaFX技巧1:可调整大小的Canvas相关推荐
- javafx canvas_JavaFX技巧1:可调整大小的Canvas
javafx canvas 在使用FlexGanttFX时,我不得不处理很多JavaFX Canvas节点. 我正在使用它在时间轴上呈现活动. 甘特图中的每一行都是一个Canvas节点. 用户可以选择 ...
- JavaFX技巧来节省内存! 属性和可观察物的阴影场
在 JavaFX的世界中, Properties API允许UI开发人员将值绑定到UI控件. 这种功能非常容易,但是当对象模型经常使用属性时,应用程序可能会很快耗尽内存. 我通常会编写两个单独的对象, ...
- JavaFX技巧2:使用Canvas API进行清晰绘图
当我最初开始使用Canvas API时,我注意到渲染代码的结果有些模糊,甚至更糟,不一致. 有些线条模糊,有些线条清晰. 来自Swing,我花了一些时间才意识到这是由JavaFX的坐标系引起的,该坐标 ...
- JavaFX技巧22:“自动调整大小(树)”表列
JavaFX "缺少功能调查"中提到的"缺少功能"的第一件事就是能够自动调整表/树表中的列大小. 没错,没有公共API是正确的,但是当您密切关注时,您会注意到J ...
- JavaFX技巧20:有很多需要展示的地方吗? 使用画布!
JavaFX应用程序似乎有两种:第一种使用带有节点和CSS样式的场景图,第二种使用单个画布. 但是,将这两种方法混合使用是完全合法的. 尤其是当您的应用程序必须显示大量详细信息时,您很容易最终创建成千 ...
- JavaFX技巧17:带有AnchorPane的动画工作台布局
最近,我不得不为应用程序实现一个布局,其中可以根据用户是否登录来隐藏或通过滑入/滑出动画显示或显示菜单区域和状态区域. 以下视频显示了实际的布局: 在过去,我可能会使用自定义控件和自定义布局代码来实现 ...
- JavaFX技巧9:请勿混用Swing / JavaFX
JavaFX团队非常努力地说服我们,因为可以将Swing内容嵌入JavaFX UI中,因此可以很容易地从Swing迁移到JavaFX. 我必须承认,我从来没有亲自尝试过,但是根据我从客户那里得到的反馈 ...
- JavaFX技巧32:需要图标吗? 使用Ikonli!
动机 自2013年以来,我一直在编写JavaFX应用程序和库的代码,它们的共同点是,我需要找到可以用于它们的良好图标/图形. 作为前Swing开发人员,我首先使用图像文件,GIF或PNG. 通常,我会 ...
- JavaFX技巧31:遮罩/剪切/ Alpha通道
选择条 最近,我不得不实现一个自定义控件,该控件使用户可以从项目列表中选择一个项目. 此" SelectionStrip"控件必须水平放置项目,并且在项目过多的情况下,允许用户左右 ...
最新文章
- 如何安装OpenCV?如何安装cv2?如何更新numpy?
- 数据结构 -- 队列
- 线性代数 第四章 向量组的线性相关性
- MySQL常见的主从复制架构_如何搭建经典的MySQL 主从复制架构
- Java三层结构的概念_Java中的mvc和三层结构究竟是什么关系
- Windows USB驱动开发点滴积累备忘录
- Centos 7安装yum时发生错误https:nginx.orgpackagesmainlinecentos7%24baseearchrepodatarepomd.xml: Errno 14 HTT
- ElasticSearch 2 (34) - 信息聚合系列之多值排序
- 黑鸭宣布开源项目-年度新秀
- 【恶搞Python】Python实现QQ连续发送信息的代码,咋就说可还刑
- Struts2 中继承ActionSupport类
- 如何将APK上传到谷歌应用市场
- 【常用办公软件有那些】万彩办公大师教程丨屏幕放大镜的使用
- 使用腾讯云部署war包
- 医院子母钟时钟系统方案
- 《类》《this指针》《构造函数》《析构函数》《拷贝构造函数》《赋值运算符重载》
- 红米Android11更新时间,这些是不支持ANDROID 11更新的小米和红米手机
- 2021-Swin Transformer Attention机制的详细推导
- bzoj3663/4660CrazyRabbit bzoj4206最大团
- 关于考试系统的ajax提交单个答案的压力测试
热门文章
- 字段缺失_区分Protobuf 3中缺失值和默认值
- springboot创建项目 编写dao serviece 和controller 持久层用mybatis
- java.util.concurrent.locks.Lock文档说明
- java 常规类的可见性_Java 12常规可用性
- 从Speedment 3.0.17或更高版本的事务轻松返回值
- java ee jms_在Java EE 7中自动配置JMS资源
- 使用JDK的密码流的加密怪癖(以及如何做)
- 使用网真和WAD热部署Kubernetes
- java8 streams_使用Java 8 Streams进行编程对算法性能的影响
- java 调试 工具_Java调试器–权威的工具列表