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

在 Java Gnome 编程教程的这一部分中,我们将进行编程的第一步。 我们将创建简单的程序。

简单的例子

第一个代码示例是一个简单的示例,它显示了居中的窗口。

simple.java

  1. package com.zetcode;
  2. import org.gnome.gdk.Event;
  3. import org.gnome.gtk.Gtk;
  4. import org.gnome.gtk.Widget;
  5. import org.gnome.gtk.Window;
  6. import org.gnome.gtk.WindowPosition;
  7. /**
  8. * ZetCode Java Gnome tutorial
  9. *
  10. * This program is a simple Java Gnome
  11. * application.
  12. *
  13. * @author jan bodnar
  14. * website zetcode.com
  15. * last modified March 2009
  16. */
  17. public class GSimple extends Window {
  18. public GSimple() {
  19. setTitle("Simple");
  20. connect(new Window.DeleteEvent() {
  21. public boolean onDeleteEvent(Widget source, Event event) {
  22. Gtk.mainQuit();
  23. return false;
  24. }
  25. });
  26. setDefaultSize(250, 150);
  27. setPosition(WindowPosition.CENTER);
  28. show();
  29. }
  30. public static void main(String[] args) {
  31. Gtk.init(args);
  32. new GSimple();
  33. Gtk.main();
  34. }
  35. }

该代码示例在屏幕中央显示一个小窗口。

  1. import org.gnome.gdk.Event;
  2. import org.gnome.gtk.Gtk;
  3. import org.gnome.gtk.Widget;
  4. import org.gnome.gtk.Window;
  5. import org.gnome.gtk.WindowPosition;

我们导入所有必要的对象。

  1. public class GSimple extends Window {

我们的应用基于Window类。 窗口是顶级小部件,用作其他小部件的容器。

  1. setTitle("Simple");

在这里,我们设置窗口的标题。

  1. connect(new Window.DeleteEvent() {
  2. public boolean onDeleteEvent(Widget source, Event event) {
  3. Gtk.mainQuit();
  4. return false;
  5. }
  6. });

如果关闭窗口,此代码将完全退出 Java Gnome 应用。

  1. setDefaultSize(250, 150);

此行设置窗口的默认大小。

  1. setPosition(WindowPosition.CENTER);

这条线使窗口在屏幕上居中。

  1. show();

现在我们显示窗口。 在调用show()方法之前,该窗口不可见。

  1. public static void main(String[] args) {
  2. Gtk.init(args);
  3. new GSimple();
  4. Gtk.main();
  5. }

main()方法是应用的入口点。 它启动并运行程序。

Java Gnome 的第一步 - 图1

图:简单

图标

在下一个示例中,我们显示应用图标。 大多数窗口管理器在标题栏的左上角以及任务栏上都显示图标。

icon.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.Gtk;
  6. import org.gnome.gtk.Widget;
  7. import org.gnome.gtk.Window;
  8. import org.gnome.gtk.WindowPosition;
  9. /**
  10. * ZetCode Java Gnome tutorial
  11. *
  12. * This program shows a small icon
  13. * in the top left corner of the window.
  14. *
  15. * @author jan bodnar
  16. * website zetcode.com
  17. * last modified March 2009
  18. */
  19. public class GIcon extends Window implements Window.DeleteEvent {
  20. Pixbuf icon;
  21. public GIcon() {
  22. setTitle("Icon");
  23. initUI();
  24. connect(this);
  25. setDefaultSize(250, 150);
  26. setPosition(WindowPosition.CENTER);
  27. show();
  28. }
  29. public void initUI() {
  30. try {
  31. icon = new Pixbuf("web.png");
  32. } catch (FileNotFoundException e) {
  33. e.printStackTrace();
  34. }
  35. setIcon(icon);
  36. }
  37. public boolean onDeleteEvent(Widget widget, Event event) {
  38. Gtk.mainQuit();
  39. return false;
  40. }
  41. public static void main(String[] args) {
  42. Gtk.init(args);
  43. new GIcon();
  44. Gtk.main();
  45. }
  46. }

该代码示例显示了应用图标。

  1. initUI();

我们将用户界面的设置委托给initUI()方法。

  1. try {
  2. icon = new Pixbuf("web.png");
  3. } catch (FileNotFoundException e) {
  4. e.printStackTrace();
  5. }

我们从磁盘上的文件加载pixbuf

  1. setIcon(icon);

setIcon()方法为窗口设置图标。

Java Gnome 的第一步 - 图2

图:图标

按钮

在下一个示例中,我们将使用 Java Gnome 库进一步增强我们的编程技能。

buttons.java

  1. package com.zetcode;
  2. import org.gnome.gdk.Event;
  3. import org.gnome.gtk.Button;
  4. import org.gnome.gtk.Fixed;
  5. import org.gnome.gtk.Gtk;
  6. import org.gnome.gtk.Stock;
  7. import org.gnome.gtk.Widget;
  8. import org.gnome.gtk.Window;
  9. import org.gnome.gtk.WindowPosition;
  10. /**
  11. * ZetCode Java Gnome tutorial
  12. *
  13. * This program shows four buttons
  14. * with different characteristics.
  15. *
  16. * @author jan bodnar
  17. * website zetcode.com
  18. * last modified March 2009
  19. */
  20. public class GButtons extends Window {
  21. public GButtons() {
  22. setTitle("Buttons");
  23. initUI();
  24. connect(new Window.DeleteEvent() {
  25. public boolean onDeleteEvent(Widget source, Event event) {
  26. Gtk.mainQuit();
  27. return false;
  28. }
  29. });
  30. setDefaultSize(250, 200);
  31. setPosition(WindowPosition.CENTER);
  32. showAll();
  33. }
  34. public void initUI() {
  35. Fixed fix = new Fixed();
  36. Button btn1 = new Button("Button");
  37. btn1.setSensitive(false);
  38. Button btn2 = new Button("Button");
  39. Button btn3 = new Button(Stock.CLOSE);
  40. Button btn4 = new Button("Button");
  41. btn4.setSizeRequest(80, 40);
  42. fix.put(btn1, 20, 30);
  43. fix.put(btn2, 100, 30);
  44. fix.put(btn3, 20, 80);
  45. fix.put(btn4, 100, 80);
  46. add(fix);
  47. }
  48. public static void main(String[] args) {
  49. Gtk.init(args);
  50. new GButtons();
  51. Gtk.main();
  52. }
  53. }

我们在窗口上显示四个不同的按钮。 我们将看到容器窗口小部件和子窗口小部件之间的区别,并将更改子窗口小部件的某些属性。

  1. Fixed fix = new Fixed();

Fixed小部件是不可见的容器小部件。 其目的是包含其他子窗口小部件。

  1. Button btn1 = new Button("Button");

Button是子窗口小部件。 子窗口小部件放置在容器内。

  1. btn1.setSensitive(false);

我们使此按钮不敏感。 这意味着我们无法单击它。 图形化的小部件为灰色。

  1. Button btn3 = new Button(Stock.CLOSE);

第三个按钮在其区域内显示图像。 Java Gnome 库具有我们可以使用的内置图像库。

  1. btn4.setSizeRequest(80, 40);

在这里,我们更改按钮的大小。

  1. fix.put(btn1, 20, 30);
  2. fix.put(btn2, 100, 30);
  3. ...

在这里,我们将按钮小部件放置在固定容器小部件内。

  1. add(fix);

我们将Fixed容器设置为Window小部件的主要容器。

  1. showAll();

我们可以调用showAll()方法(它一次显示所有窗口小部件),也可以在每个窗口小部件上调用show()方法。 包括容器。

Java Gnome 的第一步 - 图3

图:按钮

在本章中,我们在 Java Gnome 编程库中创建了第一个程序。