- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个 Griffon/Groovy/Swing 应用程序。不过,我也喜欢使用所见即所得 GUI 工具,例如 Eclipe 的 WindowBuilder 工具。
我想知道是否可以将这两种方法结合起来?我想使用 SwingBuilder
来管理 View /模型绑定(bind)和一些高级 GUI 任务(例如 JDesktopPane
和 JInternalFrame
),但将内容设计到由 WindowBuilder 管理的 JFrame
中。
这是一个简单的常规脚本:
package example
import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL
count = 0
new SwingBuilder().edt {
frame(title: 'Frame', size: [300, 300], show: true) {
desktopPane() {
internalFrame(visible: true, bounds: [25, 25, 200, 100]) {
borderLayout()
textlabel = label(text: 'Click the button!', constraints: BL.NORTH)
button(text:'Click Me',
actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BL.SOUTH)
}
internalFrame(visible: true, bounds: [50, 50, 200, 100]).add(new ExamplePanel())
}
}
}
这是 JFrame 的 ExamplePanel 子类:
package example;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
public class ExamplePanel extends JPanel {
/**
* Create the panel.
*/
public ExamplePanel() {
setLayout(new BorderLayout(0, 0));
JLabel textLabel = new JLabel("Click the button!");
add(textLabel, BorderLayout.NORTH);
JButton button = new JButton("Click Me");
add(button, BorderLayout.SOUTH);
}
}
groovy 脚本创建一个 JDesktopPane
和两个视觉上相同的 JInternalFrame
。第二个 JInternalFrame
包含 ExamplePanel
,但它没有用于检测按钮点击或更改标签内容的基础结构。
有没有一种绝妙的方法可以在 ExamplePanel
中获得与我在 SwingBuilder
定义的 internalFrame
中获得相同的行为?
最佳答案
是的,您可以使用不同的替代方案嵌入任何自定义组件:
选择一个特定节点。在您的情况下,ExamplePanel
扩展了Panel
,因此您可以通过以下方式使用panel()
节点
内部框架{面板(新的ExamplePanel())}
选择一个通用节点。您可以使用 widget
或 container
。前者不接受嵌套,而后者则接受。
内部框架{container(new ExamplePanel()) {/* 进一步定制 */}}
您可以创建自己的节点工厂并向构建器注册。 Griffon 指南中有一个部分展示了如何做到这一点。 http://griffon-framework.org/guide/2.14.0/#_views_builder_customizers
关于java - 是否可以将 Groovy 的 SwingBuilder 与 Java JFrame 子类结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49472177/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!