java - GTK 中的自定义对话框不显示任何内容
问题描述
我正在尝试使用 GTK 的 java-gnome 绑定显示一个带有两个按钮和一个用于用户输入的文本字段的简单对话框。这就是我所拥有的:
import org.gnome.gtk.*;
import org.gnome.pango.FontDescription;
public class GrepDialog extends Dialog {
private Entry entry;
public GrepDialog(Window parent) {
super("Grep", parent, false);
this.setDefaultSize(320, 100);
this.setResizable(false);
this.entry = new Entry("regex is going to be here");
this.entry.overrideFont(new FontDescription("Monospace, 14"));
this.add(entry);
this.addButton(Stock.FIND, ResponseType.OK);
this.addButton(Stock.CANCEL, ResponseType.CANCEL);
}
public String getRegex() {
return entry.getText();
}
}
我创建了一个新的 GrepDialog,调用 .run(),我只能看到两个按钮,没有文本条目。
解决方案
在 GTK2 和 GTK3 中,小部件默认是隐藏的。所以你必须明确地让它可见gtk_widget_show()
。在这里,您可以this.entry.show()
为创建的每个小部件执行(和类似的操作)。
或者,您可以在添加所有小部件后在父容器上执行gtk_widget_show_all()
(例如,this.showAll()
),这将使每个孩子都可见。
在 GTK4 中,小部件默认是可见的。所以这在 GTK4 中不需要(当你有支持 GTK4 的 java-gnome 时)。
推荐阅读
- mysql - 网站中的 Sql 错误
- jmockit - @EJB 上的 JMockit 测试失败,持续查找
- multiprocessing - 在python中使用多处理删除文件
- sql - 仅当具有最新值的列“日期”具有另一列不为 NULL 时才检索行
- javascript - 输入自动完成不适用于标签和值
- blueprism - 控制室中的 Blueprism 进程看不到网页上的元素
- python - 为什么我在 python 中看到时区异常
- php - 了解参数化查询 php、sql、mysql
- sql - 使用过滤器在 SQL 中查找重复项
- apache - .htaccess 没有强制我的网址为 https。?