在 Java Gnome 编程教程的这一部分中,我们将介绍对话框。
对话框窗口或对话框是大多数现代 GUI 应用必不可少的部分。 对话被定义为两个或更多人之间的对话。 在计算机应用中,对话框是一个窗口,用于与应用“对话”。 对话框用于输入数据,修改数据,更改应用设置等。对话框是用户与计算机程序之间进行通信的重要手段。
MessageDialog
消息对话框是方便的对话框,可向应用的用户提供消息。 该消息包含文本和图像数据。
messages.java
package com.zetcode;import org.gnome.gdk.Event;import org.gnome.gtk.Button;import org.gnome.gtk.ButtonsType;import org.gnome.gtk.Gtk;import org.gnome.gtk.MessageDialog;import org.gnome.gtk.MessageType;import org.gnome.gtk.Table;import org.gnome.gtk.Widget;import org.gnome.gtk.Window;import org.gnome.gtk.WindowPosition;/*** Java Gnome tutorial** This program shows four* message dialogs.** @author jan bodnar* website zetcode.com* last modified March 2009*/public class GMessages extends Window {Window parent;public GMessages() {setTitle("GMessages");initUI();parent = this;connect(new Window.DeleteEvent() {public boolean onDeleteEvent(Widget source, Event event) {Gtk.mainQuit();return false;}});setDefaultSize(250, 100);setPosition(WindowPosition.CENTER);showAll();}public void initUI() {Table table = new Table(2, 2, true);Button info = new Button("Information");Button warn = new Button("Warning");Button ques = new Button("Question");Button erro = new Button("Error");info.connect(new Button.Clicked() {public void onClicked(Button button) {MessageDialog md = new MessageDialog(null, true,MessageType.INFO,ButtonsType.CLOSE, "Download completed");md.setPosition(WindowPosition.CENTER);md.run();md.hide();}});warn.connect(new Button.Clicked() {public void onClicked(Button button) {MessageDialog md = new MessageDialog(parent, true,MessageType.WARNING,ButtonsType.CLOSE, "Unallowed operation");md.setPosition(WindowPosition.CENTER);md.run();md.hide();}});ques.connect(new Button.Clicked() {public void onClicked(Button button) {MessageDialog md = new MessageDialog(null, true,MessageType.QUESTION,ButtonsType.CLOSE, "Are you sure to quit?");md.setPosition(WindowPosition.CENTER);md.run();md.hide();}});erro.connect(new Button.Clicked() {public void onClicked(Button button) {MessageDialog md = new MessageDialog (null, true,MessageType.ERROR,ButtonsType.CLOSE, "Error loading file");md.setPosition(WindowPosition.CENTER);md.run();md.hide();}});table.attach(info, 0, 1, 0, 1);table.attach(warn, 1, 2, 0, 1);table.attach(ques, 0, 1, 1, 2);table.attach(erro, 1, 2, 1, 2);add(table);}public static void main(String[] args) {Gtk.init(args);new GMessages();Gtk.main();}}
在我们的示例中,我们将显示四种消息对话框。 信息,警告,问题和错误消息对话框。
Button info = new Button("Information");Button warn = new Button("Warning");Button ques = new Button("Question");Button erro = new Button("Error");
我们有四个按钮。 这些按钮中的每个按钮都会显示不同类型的消息对话框。
info.connect(new Button.Clicked() {public void onClicked(Button button) {MessageDialog md = new MessageDialog(null, true,MessageType.INFO,ButtonsType.CLOSE, "Download completed");md.setPosition(WindowPosition.CENTER);md.run();md.hide();}});
如果单击信息按钮,将显示“信息”对话框。 MessageType.INFO指定对话框的类型。 ButtonsType.CLOSE指定要在对话框中显示的按钮。 最后一个参数是已分发的消息。 该对话框使用run()方法显示。 hide()方法隐藏对话框。




AboutDialog
AboutDialog显示有关应用的信息。 AboutDialog可以显示徽标,应用名称,版本,版权或许可信息。 也可以给作者或翻译者以荣誉。
aboutdialog.java
package com.zetcode;import java.io.FileNotFoundException;import org.gnome.gdk.Event;import org.gnome.gdk.Pixbuf;import org.gnome.gtk.AboutDialog;import org.gnome.gtk.Button;import org.gnome.gtk.Fixed;import org.gnome.gtk.Gtk;import org.gnome.gtk.Widget;import org.gnome.gtk.Window;import org.gnome.gtk.WindowPosition;public class GAboutDialog extends Window implements Button.Clicked {Pixbuf logo;public GAboutDialog() {setTitle("AboutDialog");initUI();connect(new Window.DeleteEvent() {public boolean onDeleteEvent(Widget source, Event event) {Gtk.mainQuit();return false;}});setDefaultSize(250, 200);setPosition(WindowPosition.CENTER);showAll();}public void initUI() {try {logo = new Pixbuf("battery.png");} catch (FileNotFoundException e) {e.printStackTrace();}Button button = new Button("About");button.connect(this);Fixed fix = new Fixed();fix.put(button, 20, 20);add(fix);}public void onClicked(Button button) {AboutDialog about = new AboutDialog();about.setProgramName("Battery");about.setVersion("0.1");about.setCopyright("(c) Jan Bodnar");about.setComments("Battery is a simple tool for battery checking");about.setLogo(logo);about.setPosition(WindowPosition.CENTER);about.run();about.hide();}public static void main(String[] args) {Gtk.init(args);new GAboutDialog();Gtk.main();}}
该代码示例使用具有某些功能的AboutDialog。
AboutDialog about = new AboutDialog();
我们创建一个AboutDialog。
about.setProgramName("Battery");about.setVersion("0.1");about.setCopyright("(c) Jan Bodnar");
我们设置名称,版本和版权。
about.setLogo(logo);
此行创建徽标。

图:AboutDialog
在 Java Gnome 教程的这一部分中,我们介绍了对话框。
