当前位置: 首页 > 面试题库 >

Java中的声明性GUI编程的建议

孙永思
2023-03-14
问题内容

我想知道是否有关于使用Java进行声明性GUI编程的建议。(我讨厌基于视觉的GUI创建者/编辑器软件,但是对手动实例化JPanels和Boxes以及JLabel和JLists等感到有点厌倦。)

这是我的总体问题,但是对于我正在考虑采用的方法,我有两个具体问题:

  1. JavaFX:在JavaFX中是否有一个实际的GUI显示示例(例如,不是圆形和矩形,而是列表框,按钮和标签等),可以与访问和更新各种元素的Java源文件交互?

  2. 普通的Old Swing,带有一些可以解析XUL格式的XML的东西:是否有人发明了XML声明式语法(例如XUL)以与Java Swing一起使用?我想这样做并不难,它基于STaX创建一些代码,该代码读取XML文件,实例化Swing元素的层次结构,并使该层次结构可以通过某种对象模型进行访问。但是,我宁愿使用众所周知的,经过记录和测试的东西,也不愿自己发明这种东西。

  3. JGoodies表单 -并不完全是声明性的,但是有点接近,我对JGoodies Binding感到幸运。但是他们对“表格布局”的语法似乎有点含糊。

编辑: 这里有很多不错的答案!(在上面添加了#3,我在上面添加了#3),对于您在使用这些框架之一进行实际应用时所获得的任何经验,我将不胜感激。

ps我确实尝试了几次Google搜索(“ java gui声明式”),只是不太了解要查找什么。


问题答案:

您可能会看看javabuilders;它使用YAML来构建Swing
UI。

手册
[PDF]中的一个简单示例

JFrame:
    name: myFrame
    title: My Frame
    content:
        - JLabel:
            name: myLabel2
            text: My First Label
        - JLabel:
            name: myLabel2
            text: My Second Label

或者:

JFrame:
    name: myFrame
    title: My Frame
    content:
        - JLabel: {name: myLabel2, text: My First Label}
        - JLabel: {name: myLabel2, text: My Second Label}

甚至:

JFrame(name=myFrame,title=My Frame):
    - JLabel(name=myLabel2, text=My First Label)
    - JLabel(name=myLabel2, text=My Second Label)


 类似资料:
  • 下面是我的代码:

  • 这就是我遇到的问题,我需要输入以下五种方法: null 和错误是:

  • 问题内容: 这两个声明之间有什么区别? 宣言1: 宣言2: 问题答案: 这是通用的,您想在将实现细节返回给客户端时隐藏实现细节,以后可以将实现从透明地更改为。 在设计库等的情况下,此机制很有用,这些库可能会在某个时间点更改其实现详细信息,而对客户端的更改最少。 这是您始终需要返回的要求。在某些时候,如果您想将实现细节更改为,也应在客户端进行更改以代替。

  • 我是 Kotlin 的新手,我有以下疑问 - 使用Java到Kotlin转换器(此链接),我将以下Java代码转换为Kotlin。 Java类: 生成的Kotlin类: 但是我不明白Java代码和生成的静态编程语言代码是如何等价的,因为类数据成员的可见性修饰符从私有(Java)变为公共(静态编程语言)。 我相信,如果可见性修饰符被保留(数据成员在静态编程语言中被声明为私有),getter和sett

  • 这两种声明之间有什么区别? 宣言1: 宣言2:

  • API引用 在 1.4 版更改: 声明系统的基本结构现在直接成为SQLAlchemy ORM的一部分。有关这些组件,请参见: declarative_base() declared_attr has_inherited_table() synonym_for() sqlalchemy.orm.as_declarative() 见 声明性扩展 对于其余的声明性扩展类。