0 0

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个答案 按时间排序 按投票排序

0 0

采纳的答案

这是个比较典型的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

相关推荐

    Java语言中static关键词应用解析.zip

    例如,如果一个类有一个静态变量`count`,那么所有该类的对象都将共享同一个`count`值。静态变量可以通过类名直接访问,而无需创建对象,如`ClassName.count`。 2. 静态方法:不依赖于类的实例就能调用的方法,常...

    JavaFX脚本语言基础

    通过继承,一个类可以从另一个类中获取属性和方法,从而实现代码重用和模块化。 3. **对象字面量** - 对象字面量是一种简洁的方式,用于定义和初始化对象。这种方式可以使代码更加清晰易读。 4. **数据类型** -...

    JDK15+JavaFX15环境配置与运行1

    - 在Eclipse中创建一个新的Java项目。 ##### 4.2 加入JavaFX包 - 右键点击项目,选择`Build Path -> Java Build Path -> Libraries`。 - 单击`Add Library`,选择`User Library`。 - 勾选`JavaFX15`。 - 此时的...

    java实现体温单实例-eclipse-java工程

    在Java编程环境中,Eclipse是一个广泛使用的集成开发环境(IDE),尤其适合于Java应用程序的开发。本实例将探讨如何在Eclipse中实现一个体温单应用,这是一个常见的需求,特别是在医疗信息化系统中。体温单用于记录...

    Java.doc (java基础教学)

    - **类定义**:在Java中定义一个类的基本格式如下: ```java public class ClassName { // 成员变量 int num; // 构造方法 public ClassName() { this.num = 0; } // 方法 public void display() { ...

    详细介绍java中的内部类共8页.pdf.zip

    Java中的内部类是Java语言特性的一个重要组成部分,它允许在一个类的定义内部定义另一个类。这种设计模式在处理复杂的对象关系、实现匿名类以及提供更高级别的封装时非常有用。以下是对Java内部类的详细说明: 1. *...

    JavaFX Script 语言教程(面向Swing 程序员).pdf

    ### JavaFX Script 语言教程(面向Swing程序员) #### 概述 JavaFX Script 是一种专为简化图形用户界面(GUI)开发而设计的...对于已经熟悉Swing的开发者来说,学习JavaFX Script 将会是一个很好的扩展技能的机会。

    JAVA_匿名内部类

    Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义完整类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的情况,尤其是在需要简洁代码的地方。以下是对Java匿名内部...

    java程序实例 事件处理

    根据提供的文件信息,我们可以总结出以下...综上所述,Java的异常处理机制是编程中的一个重要概念,可以帮助开发者有效地管理程序中的错误情况。同时,GUI和事件处理则是Java中创建用户界面和实现交互的重要组成部分。

    JavaFx配置说明.zip

    - **安装OpenJDK**:首先,你需要安装一个支持JavaFX的JDK版本,如OpenJDK 11或更高版本。 - **下载JavaFX SDK**:从官方站点(https://gluonhq.com/products/javafx/)获取适合你的操作系统和JDK版本的JavaFX SDK...

    java上机练习.pdf

    `public class` 定义了一个类,`T1`是类名,`public static void main(String args[])`是主方法,它是程序执行的入口。在主方法中,`System.out.println("HelloWorld");`用于在控制台输出“HelloWorld”字符串。 2....

    java期末复习试题.doc

    应用程序是一种独立的程序,可以在任何支持Java环境的计算机上运行,它通常包含一个主类,该类中定义了一个`main`方法作为程序的入口点。Applet是一种可以在网页上运行的小程序,通常嵌入HTML页面中并通过浏览器展示...

    Java2实用教程(第5版)最新答案

    Java程序必须有一个类含有public static void main(String args[])方法,该类称为应用程序的主类。 Java标识符是由字母、下划线、美元符号和数字组成的,第一个字符不能是数字。Java语言中已经被赋予特定意义的一些...

    清华Java程序设计实例教程

    例如,在《清华Java程序设计实例教程》中,可能涉及到创建一个名为"Student"的类,包含姓名、年龄等属性,以及获取和设置这些属性的方法。 2. 主函数:Java程序的入口点是main()函数。"public static void main...

    Java新手入门的30个基本概念.rar

    一个类可以继承一个抽象类,但只能实现一个接口。 25. **集合框架**:Java提供了ArrayList、LinkedList、HashSet、HashMap等集合类,用于存储和操作对象。 26. **泛型**:泛型提供类型安全,允许在编译时检查类型...

    JAVA学习第一课 H

    这段代码定义了一个名为`HelloWorld`的公共类,并在`main`方法中输出了字符串。 4. 类与对象: 在Java中,一切皆为对象。类是对象的蓝图,它定义了对象的属性(数据成员)和行为(方法)。上述`HelloWorld`就是一个...

    Java最简单应用程序介绍.pdf

    在Java中,每个程序至少包含一个类,而源文件名通常与public类的名称一致。 2. **主方法**:`public static void main(String[] args)` - 这是Java程序的入口点,解释器将从这里开始执行。`public`修饰符表示main...

    JAVA学习第一课 I.

    在Java中,你将学习如何创建一个简单的类(class),并使用`public static void main(String[] args)`作为程序的入口点,输出这句经典的问候。 3. **基本语法**:了解Java的基本语法结构,如变量声明、数据类型...

    Java学习基本代码

    在Java中,这涉及到创建一个名为`Main`的公共类,并在其中定义一个`main`方法,这是程序的入口点。代码可能如下: ```java public class Main { public static void main(String[] args) { System.out.println(...

    java计算器源代码

    在`Calculator`类中,`public static void main(String[] args)`方法会被JVM(Java虚拟机)执行。在这里,用户输入会被处理,计算器的界面(可能是命令行界面或图形用户界面GUI)会被初始化,并调用其他计算方法。 ...

Global site tag (gtag.js) - Google Analytics