当前位置: 首页 > news >正文

【javaFX基础】实现图形能够根据窗口大小自动调整位置

一、功能说明

1、​​​​​​​使圆形 ci 会根据场景大小自动调整位置

2、X坐标:场景宽度的1/2(水平居中)

3、Y坐标:场景高度的1/8

过程中犯了一个低级错误,在此记录下:

无法从静态上下文中引用非静态问题,需通过控制器实例调用非静态方法,因为静态调用之所以失败,是因为 Java 无法确定要操作哪个具体对象的组件!

修复方法调用:
将 HelloController.circleLocationBind(scene)(静态调用)
改为 controller.circleLocationBind(scene)(实例调用)

二、代码实践

 主要涉及三个文件,代码如下

1、HelloApplication

package org.example.testsc1;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;import java.io.IOException;public class HelloApplication extends Application {@Overridepublic void start( Stage primaryStage) throws IOException {FXMLLoader fxmlLoader =new FXMLLoader();fxmlLoader.setLocation(getClass().getResource( "Sc.fxml"));Parent root=fxmlLoader.load();Scene scene =new Scene(root);HelloController controller =fxmlLoader.getController();controller.circleLocationBind(scene);//实现圆随页面大小变化而位置变化primaryStage.setTitle("Hello World");primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args){ launch(args);}
}

2、HelloController

package org.example.testsc1;import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.shape.Circle;public class HelloController {/*@FXMLprivate Label welcomeText;@FXMLprotected void onHelloButtonClick() {welcomeText.setText("Welcome to JavaFX Application!");*/@FXMLprivate Button bt1;@FXMLprivate Circle ci;public void circleLocationBind(Scene scene) {ci.centerXProperty().bind(scene.widthProperty().divide(2));ci.centerYProperty().bind(scene.heightProperty().divide(8));}@FXMLvoid btAction(ActionEvent event) {System.out.println("您点击了hello按钮");System.out.println("JavaFX版本: " + System.getProperty("javafx.version"));System.out.println("Java版本: " + System.getProperty("java.version"));}public void initialize(){System.out.println("JavaFX版本: " + System.getProperty("javafx.version"));System.out.println("Java版本: " + System.getProperty("java.version"));}
}

3、Sc.fxml

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.Font?><AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="328.0" prefWidth="480.0" xmlns="http://javafx.com/javafx/25" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.example.testsc1.HelloController"><children><Button fx:id="bt1" layoutX="155.0" layoutY="214.0" mnemonicParsing="false" onAction="#btAction" prefHeight="47.0" prefWidth="106.0" text="Button" /><Label contentDisplay="CENTER" layoutX="155.0" layoutY="136.0" prefHeight="41.0" prefWidth="106.0" text="hello world" textAlignment="CENTER"><font><Font size="15.0" /></font></Label><Circle fx:id="ci" centerX="250.0" centerY="50.0" fill="DODGERBLUE" radius="42.0" stroke="BLACK" strokeType="INSIDE" /></children>
</AnchorPane>

http://www.dtcms.com/a/521240.html

相关文章:

  • 针对餐饮公司推广做网站方法河间网站
  • 接口和继承类的对比
  • 瑞安自适应网站建设建设一个公司的网站需要多少钱
  • 婚庆网站哪个网站好手机网站的好处
  • RCLAMP2402B.TCT ESD保护二极管/TVS二极管 Semtech升特 电路保护方案解析
  • 广东网站优化公司上海seo优化服务公司
  • 索引失效的问题如何排查?
  • 小九源码-springboot099-基于Springboot的本科实践教学管理系统
  • 单位网站设计建议书世界500强企业排行榜
  • 深圳制作网站多少费用电子商务有哪些职业
  • 【Spring Security】授权(二)
  • 塘沽网站开发企业站网页制作实训步骤
  • jsp电影网站开发教程单位外部网站建设价格
  • 哈尔滨住房和城乡建设厅网站做网站原型现成的框架
  • 做网站实现发送信息功能号卡分销系统源码
  • 用Python Streamlit Sqlite3 写一个简单商品管理系统
  • LazyLLM 创新实践:LLM 与工具协同,构建智能客服问答与知识库检索助手
  • 网站主体负责人邮箱wordpress国外空间
  • 网站建设公制度网页设计与制作实训报告两千字
  • 算力赋能,智见未来 | 国鑫亮相ICG-20,共赴组学与AI新纪元
  • 阿里巴巴网站的功能win 无法卸载 wordpress
  • 慧园区:科技赋能下的城市空间新范式
  • 网站建设费一般是什么费用网页设计的背景代码大全
  • 现在网站开发语言有各大网站搜索引擎提交入口
  • 【MCU控制 初级手札】1.4 化合物 【化学基础】
  • 基于SpringBoot+Vue的DIY手工社预约管理系统(Echarts图形化、腾讯地图API)
  • 网站开发专业的建设设想慕课网站开发与实现
  • 【“具身智能”AI烹饪机器人系统 - 外委研发课题清单】
  • ELK运维之路(使用Logstatsh对日志进行处理综合案例)
  • 【开题答辩全过程】以 基于.NET的途乐旅游管理系统为例,包含答辩的问题和答案