-
JavaFx Main中怎么绑定Java类中的一个static变量呢?10
最近遇到一个很烦的问题,搞了很久搞不定,想请各位帮忙,看看有没有解决的办法,我建了个JavaFx应用程序,Main里面要监测一个Java线程中的一个变量的变化,并把变化呈现出来,我搞了很久也没搞定...
var output = Group { content: Text{ x : 550 y : 143 content: bind OutputInfo.getIntance().outputInfo font:Font{ size:30 } } }
这是Main.fx里面的一小段代码,里面的content内容是绑定到另一个类中的变量
public class OutputInfo { public String outputInfo; private static OutputInfo outputInstance = new OutputInfo("Output:"); OutputInfo(String outputInfo){ this.outputInfo = outputInfo; } public static OutputInfo getIntance() { return outputInstance; } }
这里就是需要监测的变量outputInfo
我有一个线程,在运行之中把outputInfo改变了public void run() { DBSession db1 = new DBSession(); DBSession db2 = new DBSession(); //设置隔离级别 1为 TRANSACTION_READ_UNCOMMITTED 2为 TRANSACTION_READ_COMMITTED 4为 TRANSACTION_REPEATABLE_READ 8为 TRANSACTION_SERIALIZABLE db1.setIsolationLevel(value); db2.setIsolationLevel(value); db1.setIsAutoCommit(false); db2.setIsAutoCommit(false); String sql1 = "UPDATE example SET VALUE=2 WHERE id=1"; String sql2 = "UPDATE example SET VALUE=1 WHERE id=2"; String sql3 = "UPDATE example SET VALUE=2 WHERE id=2"; String sql4 = "UPDATE example SET VALUE=1 WHERE id=1"; OutputInfo.getIntance().outputInfo = db1.executeUpdate(sql1); OutputInfo.getIntance().outputInfo = db2.executeUpdate(sql2); OutputInfo.getIntance().outputInfo = db1.executeUpdate(sql3); OutputInfo.getIntance().outputInfo = db2.executeUpdate(sql4); db1.rollback(); db2.rollback(); db1.close(); db2.close();
我这上面的executeUpdate方法会返回操作是否成功的信息,并把信息赋给OutputInfo中的outputInfo
我自己感觉我应该写的没错,但是为什么不起作用呢,有没有那个大牛帮忙解决一下困惑,感激不尽!
不一定非要按照我的思路来想办法,其他的办法也行,总之,JavaFx中怎么监测Java类中变量的变化呢?2009年5月14日 00:29
1个答案 按时间排序 按投票排序
-
采纳的答案
这是个比较典型的JavaFX和Java互操作的问题,可以参考本人文章: JavaFX和Java之间的互操作性。
基本原则是,bind仅限于JavaFX类,对Java类无效。要解决你的问题,可以这么做:
定义一个Java的interface类 JavaInterface.java :public interface JavaInterface { public void doUpdate(String s); }
写一个JavaFX类UpdateClass.fx实现这个interface,如下:/* * UpdateClass.fx * * @author Henry Zhang */ public var updatedContent: String = "defaultValue"; public class UpdateClass extends JavaInterface { public override function doUpdate( s: String): Void { updatedContent = s; } }
在OutputInfo.java中增加一句声明:public static JavaInterface javafxObject ;
在Main.fx中,可以这样写:OutputInfo.javafxObject = UpdateClass {}; var output = Group { content: Text{ x : 550 y : 143 content: bind UpdateClass.updatedContent; font:Font{ size:30 } } }
最后,在你的run()方法中增加相应的通知功能,如:. . . . . . String result = db1.executeUpdate(sql1); OutputInfo.javafxObject.doUpdate( result ); result = db1.executeUpdate(sql2); OutputInfo.javafxObject.doUpdate( result ); . . . . . .
希望对你有帮助。更多JavaFX的信息可以可以参考:JavaFX Guy博客
JavaFX技术应用交流
2009年5月14日 11:28
相关推荐
例如,如果一个类有一个静态变量`count`,那么所有该类的对象都将共享同一个`count`值。静态变量可以通过类名直接访问,而无需创建对象,如`ClassName.count`。 2. 静态方法:不依赖于类的实例就能调用的方法,常...
通过继承,一个类可以从另一个类中获取属性和方法,从而实现代码重用和模块化。 3. **对象字面量** - 对象字面量是一种简洁的方式,用于定义和初始化对象。这种方式可以使代码更加清晰易读。 4. **数据类型** -...
- 在Eclipse中创建一个新的Java项目。 ##### 4.2 加入JavaFX包 - 右键点击项目,选择`Build Path -> Java Build Path -> Libraries`。 - 单击`Add Library`,选择`User Library`。 - 勾选`JavaFX15`。 - 此时的...
在Java编程环境中,Eclipse是一个广泛使用的集成开发环境(IDE),尤其适合于Java应用程序的开发。本实例将探讨如何在Eclipse中实现一个体温单应用,这是一个常见的需求,特别是在医疗信息化系统中。体温单用于记录...
- **类定义**:在Java中定义一个类的基本格式如下: ```java public class ClassName { // 成员变量 int num; // 构造方法 public ClassName() { this.num = 0; } // 方法 public void display() { ...
Java中的内部类是Java语言特性的一个重要组成部分,它允许在一个类的定义内部定义另一个类。这种设计模式在处理复杂的对象关系、实现匿名类以及提供更高级别的封装时非常有用。以下是对Java内部类的详细说明: 1. *...
### JavaFX Script 语言教程(面向Swing程序员) #### 概述 JavaFX Script 是一种专为简化图形用户界面(GUI)开发而设计的...对于已经熟悉Swing的开发者来说,学习JavaFX Script 将会是一个很好的扩展技能的机会。
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义完整类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的情况,尤其是在需要简洁代码的地方。以下是对Java匿名内部...
根据提供的文件信息,我们可以总结出以下...综上所述,Java的异常处理机制是编程中的一个重要概念,可以帮助开发者有效地管理程序中的错误情况。同时,GUI和事件处理则是Java中创建用户界面和实现交互的重要组成部分。
- **安装OpenJDK**:首先,你需要安装一个支持JavaFX的JDK版本,如OpenJDK 11或更高版本。 - **下载JavaFX SDK**:从官方站点(https://gluonhq.com/products/javafx/)获取适合你的操作系统和JDK版本的JavaFX SDK...
`public class` 定义了一个类,`T1`是类名,`public static void main(String args[])`是主方法,它是程序执行的入口。在主方法中,`System.out.println("HelloWorld");`用于在控制台输出“HelloWorld”字符串。 2....
应用程序是一种独立的程序,可以在任何支持Java环境的计算机上运行,它通常包含一个主类,该类中定义了一个`main`方法作为程序的入口点。Applet是一种可以在网页上运行的小程序,通常嵌入HTML页面中并通过浏览器展示...
Java程序必须有一个类含有public static void main(String args[])方法,该类称为应用程序的主类。 Java标识符是由字母、下划线、美元符号和数字组成的,第一个字符不能是数字。Java语言中已经被赋予特定意义的一些...
例如,在《清华Java程序设计实例教程》中,可能涉及到创建一个名为"Student"的类,包含姓名、年龄等属性,以及获取和设置这些属性的方法。 2. 主函数:Java程序的入口点是main()函数。"public static void main...
一个类可以继承一个抽象类,但只能实现一个接口。 25. **集合框架**:Java提供了ArrayList、LinkedList、HashSet、HashMap等集合类,用于存储和操作对象。 26. **泛型**:泛型提供类型安全,允许在编译时检查类型...
这段代码定义了一个名为`HelloWorld`的公共类,并在`main`方法中输出了字符串。 4. 类与对象: 在Java中,一切皆为对象。类是对象的蓝图,它定义了对象的属性(数据成员)和行为(方法)。上述`HelloWorld`就是一个...
在Java中,每个程序至少包含一个类,而源文件名通常与public类的名称一致。 2. **主方法**:`public static void main(String[] args)` - 这是Java程序的入口点,解释器将从这里开始执行。`public`修饰符表示main...
在Java中,你将学习如何创建一个简单的类(class),并使用`public static void main(String[] args)`作为程序的入口点,输出这句经典的问候。 3. **基本语法**:了解Java的基本语法结构,如变量声明、数据类型...
在Java中,这涉及到创建一个名为`Main`的公共类,并在其中定义一个`main`方法,这是程序的入口点。代码可能如下: ```java public class Main { public static void main(String[] args) { System.out.println(...
在`Calculator`类中,`public static void main(String[] args)`方法会被JVM(Java虚拟机)执行。在这里,用户输入会被处理,计算器的界面(可能是命令行界面或图形用户界面GUI)会被初始化,并调用其他计算方法。 ...