gpt4 book ai didi

java - 如何在 Java Gnome/GTK 程序中使用 Glade UI(.glade 文件)?

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:48 25 4
gpt4 key购买 nike

我在 Internet 上进行了一项研究,寻找教程/文档来解释我如何在 Java Gnome 项目中使用在 Glade 中设计的 UI,但没有成功。我已经知道如何使用 Java Gnome/GTK 从代码创建 UI。无论如何,我想使用我在 Java Gnome/Gtk 项目中创建的 Glade UI,但我不知道从哪里开始。请告诉我:

  • 我需要安装哪些包;

  • 如何将我使用 Glade(.glade 文件)创建的 UI 与我的 Java Gnome/Gtk 项目(特别是在 Eclipse 中)集成;

  • 并举例说明。

提前致谢。

这就是我的 Glade UI 的外观(只需单击图像即可放大):

enter image description here

这是上面 UI 的 XML 代码:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="window_position">center</property>
<child>
<object class="GtkFixed" id="fixed1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="entry1">
<property name="width_request">162</property>
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="valign">end</property>
<property name="invisible_char">•</property>
</object>
<packing>
<property name="x">11</property>
<property name="y">49</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry2">
<property name="width_request">162</property>
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="valign">end</property>
<property name="invisible_char">•</property>
<property name="invisible_char_set">True</property>
</object>
<packing>
<property name="x">271</property>
<property name="y">49</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label">
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">*</property>
</object>
<packing>
<property name="x">216</property>
<property name="y">49</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button">
<property name="label" translatable="yes">Calculate!!!</property>
<property name="use_action_appearance">False</property>
<property name="width_request">84</property>
<property name="height_request">27</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="x">181</property>
<property name="y">93</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

最佳答案

好的,您需要:

  • 初始化 GTK 库
  • 创建一个 Builder 对象
  • 检索窗口小部件
  • 显示窗口小部件

我假设您已经在 Linux 系统中安装了 java-gnome 库并将 jar 导入到您的 eclipse 项目中(项目属性 - java 构建路径 - 添加外部 jar -/usr/share/java/gtk.jar)。

示例代码:

Gtk.init(args); //Init library
Builder b = new Builder(); //Create builder
b.addFromFile("filename.glade"); //Load layout from file
Window w = (Window) b.getObject("myWindowName"); //Retrieve an object
w.showAll(); //Show window
Gtk.main();

这是它应该的工作方式。如果你想在一个对象上设置一个监听器,例如一个按钮,您可以像之前在窗口中看到的那样按名称检索对象,然后:

button.connect(new Clicked() {

@Override
public void onClicked(Button arg0) {
// Do what you want
}
});

它对你有用吗?好吧,这不适合我。问题是我的代码在调用 Builder.addFromFile(filename) 时抛出异常

java.text.ParseException: Invalid object type `GtkLabel'

错误与树中的第一个元素有关。经过深入研究,我发现,由于一个从未修复的已知错误,您需要在使用之前预先定义每个小部件:在这种情况下,只需调用

 new Label();

在创建构建器之前。

显然,这打算以这种方式工作,并将在未来修复。

有关此问题的更多信息:

Thread on java-gnome-developer mailing list

Thread on Java-gnome-hackers mailing list

希望这可以帮助...

关于java - 如何在 Java Gnome/GTK 程序中使用 Glade UI(.glade 文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com