# Java Gnome 中的对话框 > 原文: [http://zetcode.com/gui/javagnome/dialogs/](http://zetcode.com/gui/javagnome/dialogs/) 在 Java Gnome 编程教程的这一部分中,我们将介绍对话框。 对话框窗口或对话框是大多数现代 GUI 应用必不可少的部分。 对话被定义为两个或更多人之间的对话。 在计算机应用中,对话框是一个窗口,用于与应用“对话”。 对话框用于输入数据,修改数据,更改应用设置等。对话框是用户与计算机程序之间进行通信的重要手段。 ## `MessageDialog` 消息对话框是方便的对话框,可向应用的用户提供消息。 该消息包含文本和图像数据。 `messages.java` ```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(); } } ``` 在我们的示例中,我们将显示四种消息对话框。 信息,警告,问题和错误消息对话框。 ```java Button info = new Button("Information"); Button warn = new Button("Warning"); Button ques = new Button("Question"); Button erro = new Button("Error"); ``` 我们有四个按钮。 这些按钮中的每个按钮都会显示不同类型的消息对话框。 ```java 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()`方法隐藏对话框。 ![Information message dialog](img/7851228aa57a3363aee60211c7f74902.jpg) ![Warning message dialog](img/4eb21ef662a960a521477d98ea89f704.jpg) ![Question message dialog](img/4a714814c60d2ebdc644ca9fd233434d.jpg) ![Error message dialog](img/0e15c580edf7dabfe4bf12f5515909cf.jpg) ## `AboutDialog` `AboutDialog`显示有关应用的信息。 `AboutDialog`可以显示徽标,应用名称,版本,版权或许可信息。 也可以给作者或翻译者以荣誉。 `aboutdialog.java` ```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`。 ```java AboutDialog about = new AboutDialog(); ``` 我们创建一个`AboutDialog`。 ```java about.setProgramName("Battery"); about.setVersion("0.1"); about.setCopyright("(c) Jan Bodnar"); ``` 我们设置名称,版本和版权。 ```java about.setLogo(logo); ``` 此行创建徽标。 ![AboutDialog](img/c2c6088d56a343fa48453ab1aee7052a.jpg) 图:`AboutDialog` 在 Java Gnome 教程的这一部分中,我们介绍了对话框。