原文: http://zetcode.com/gui/javagnome/dialogs/

在 Java Gnome 编程教程的这一部分中,我们将介绍对话框。

对话框窗口或对话框是大多数现代 GUI 应用必不可少的部分。 对话被定义为两个或更多人之间的对话。 在计算机应用中,对话框是一个窗口,用于与应用“对话”。 对话框用于输入数据,修改数据,更改应用设置等。对话框是用户与计算机程序之间进行通信的重要手段。

MessageDialog

消息对话框是方便的对话框,可向应用的用户提供消息。 该消息包含文本和图像数据。

messages.java

  1. package com.zetcode;
  2. import org.gnome.gdk.Event;
  3. import org.gnome.gtk.Button;
  4. import org.gnome.gtk.ButtonsType;
  5. import org.gnome.gtk.Gtk;
  6. import org.gnome.gtk.MessageDialog;
  7. import org.gnome.gtk.MessageType;
  8. import org.gnome.gtk.Table;
  9. import org.gnome.gtk.Widget;
  10. import org.gnome.gtk.Window;
  11. import org.gnome.gtk.WindowPosition;
  12. /**
  13. * Java Gnome tutorial
  14. *
  15. * This program shows four
  16. * message dialogs.
  17. *
  18. * @author jan bodnar
  19. * website zetcode.com
  20. * last modified March 2009
  21. */
  22. public class GMessages extends Window {
  23. Window parent;
  24. public GMessages() {
  25. setTitle("GMessages");
  26. initUI();
  27. parent = this;
  28. connect(new Window.DeleteEvent() {
  29. public boolean onDeleteEvent(Widget source, Event event) {
  30. Gtk.mainQuit();
  31. return false;
  32. }
  33. });
  34. setDefaultSize(250, 100);
  35. setPosition(WindowPosition.CENTER);
  36. showAll();
  37. }
  38. public void initUI() {
  39. Table table = new Table(2, 2, true);
  40. Button info = new Button("Information");
  41. Button warn = new Button("Warning");
  42. Button ques = new Button("Question");
  43. Button erro = new Button("Error");
  44. info.connect(new Button.Clicked() {
  45. public void onClicked(Button button) {
  46. MessageDialog md = new MessageDialog(null, true,
  47. MessageType.INFO,
  48. ButtonsType.CLOSE, "Download completed");
  49. md.setPosition(WindowPosition.CENTER);
  50. md.run();
  51. md.hide();
  52. }
  53. });
  54. warn.connect(new Button.Clicked() {
  55. public void onClicked(Button button) {
  56. MessageDialog md = new MessageDialog(parent, true,
  57. MessageType.WARNING,
  58. ButtonsType.CLOSE, "Unallowed operation");
  59. md.setPosition(WindowPosition.CENTER);
  60. md.run();
  61. md.hide();
  62. }
  63. });
  64. ques.connect(new Button.Clicked() {
  65. public void onClicked(Button button) {
  66. MessageDialog md = new MessageDialog(null, true,
  67. MessageType.QUESTION,
  68. ButtonsType.CLOSE, "Are you sure to quit?");
  69. md.setPosition(WindowPosition.CENTER);
  70. md.run();
  71. md.hide();
  72. }
  73. });
  74. erro.connect(new Button.Clicked() {
  75. public void onClicked(Button button) {
  76. MessageDialog md = new MessageDialog (null, true,
  77. MessageType.ERROR,
  78. ButtonsType.CLOSE, "Error loading file");
  79. md.setPosition(WindowPosition.CENTER);
  80. md.run();
  81. md.hide();
  82. }
  83. });
  84. table.attach(info, 0, 1, 0, 1);
  85. table.attach(warn, 1, 2, 0, 1);
  86. table.attach(ques, 0, 1, 1, 2);
  87. table.attach(erro, 1, 2, 1, 2);
  88. add(table);
  89. }
  90. public static void main(String[] args) {
  91. Gtk.init(args);
  92. new GMessages();
  93. Gtk.main();
  94. }
  95. }

在我们的示例中,我们将显示四种消息对话框。 信息,警告,问题和错误消息对话框。

  1. Button info = new Button("Information");
  2. Button warn = new Button("Warning");
  3. Button ques = new Button("Question");
  4. Button erro = new Button("Error");

我们有四个按钮。 这些按钮中的每个按钮都会显示不同类型的消息对话框。

  1. info.connect(new Button.Clicked() {
  2. public void onClicked(Button button) {
  3. MessageDialog md = new MessageDialog(null, true,
  4. MessageType.INFO,
  5. ButtonsType.CLOSE, "Download completed");
  6. md.setPosition(WindowPosition.CENTER);
  7. md.run();
  8. md.hide();
  9. }
  10. });

如果单击信息按钮,将显示“信息”对话框。 MessageType.INFO指定对话框的类型。 ButtonsType.CLOSE指定要在对话框中显示的按钮。 最后一个参数是已分发的消息。 该对话框使用run()方法显示。 hide()方法隐藏对话框。

Java Gnome 中的对话框 - 图1

Java Gnome 中的对话框 - 图2

Java Gnome 中的对话框 - 图3

Java Gnome 中的对话框 - 图4

AboutDialog

AboutDialog显示有关应用的信息。 AboutDialog可以显示徽标,应用名称,版本,版权或许可信息。 也可以给作者或翻译者以荣誉。

aboutdialog.java

  1. package com.zetcode;
  2. import java.io.FileNotFoundException;
  3. import org.gnome.gdk.Event;
  4. import org.gnome.gdk.Pixbuf;
  5. import org.gnome.gtk.AboutDialog;
  6. import org.gnome.gtk.Button;
  7. import org.gnome.gtk.Fixed;
  8. import org.gnome.gtk.Gtk;
  9. import org.gnome.gtk.Widget;
  10. import org.gnome.gtk.Window;
  11. import org.gnome.gtk.WindowPosition;
  12. public class GAboutDialog extends Window implements Button.Clicked {
  13. Pixbuf logo;
  14. public GAboutDialog() {
  15. setTitle("AboutDialog");
  16. initUI();
  17. connect(new Window.DeleteEvent() {
  18. public boolean onDeleteEvent(Widget source, Event event) {
  19. Gtk.mainQuit();
  20. return false;
  21. }
  22. });
  23. setDefaultSize(250, 200);
  24. setPosition(WindowPosition.CENTER);
  25. showAll();
  26. }
  27. public void initUI() {
  28. try {
  29. logo = new Pixbuf("battery.png");
  30. } catch (FileNotFoundException e) {
  31. e.printStackTrace();
  32. }
  33. Button button = new Button("About");
  34. button.connect(this);
  35. Fixed fix = new Fixed();
  36. fix.put(button, 20, 20);
  37. add(fix);
  38. }
  39. public void onClicked(Button button) {
  40. AboutDialog about = new AboutDialog();
  41. about.setProgramName("Battery");
  42. about.setVersion("0.1");
  43. about.setCopyright("(c) Jan Bodnar");
  44. about.setComments("Battery is a simple tool for battery checking");
  45. about.setLogo(logo);
  46. about.setPosition(WindowPosition.CENTER);
  47. about.run();
  48. about.hide();
  49. }
  50. public static void main(String[] args) {
  51. Gtk.init(args);
  52. new GAboutDialog();
  53. Gtk.main();
  54. }
  55. }

该代码示例使用具有某些功能的AboutDialog

  1. AboutDialog about = new AboutDialog();

我们创建一个AboutDialog

  1. about.setProgramName("Battery");
  2. about.setVersion("0.1");
  3. about.setCopyright("(c) Jan Bodnar");

我们设置名称,版本和版权。

  1. about.setLogo(logo);

此行创建徽标。

Java Gnome 中的对话框 - 图5

图:AboutDialog

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