|
|
Строка 1: |
Строка 1: |
- | In this part of the Java Gnome programming tutorial, we will do our first steps in programming.
| |
- | We will create simple programs.
| |
| | | |
- | == Simple example ==
| |
- |
| |
- | The first code example is a simple one that shows a centered window.
| |
- |
| |
- | <source lang="java">
| |
- |
| |
- | package com.zetcode;
| |
- |
| |
- | import org.gnome.gdk.Event;
| |
- | import org.gnome.gtk.Gtk;
| |
- | import org.gnome.gtk.Widget;
| |
- | import org.gnome.gtk.Window;
| |
- | import org.gnome.gtk.WindowPosition;
| |
- |
| |
- |
| |
- | /**
| |
- | * ZetCode Java Gnome tutorial
| |
- | *
| |
- | * This program is a simple Java Gnome
| |
- | * application.
| |
- | *
| |
- | * @author jan bodnar
| |
- | * website zetcode.com
| |
- | * last modified March 2009
| |
- | */
| |
- |
| |
- | public class GSimple extends Window {
| |
- |
| |
- | public GSimple() {
| |
- |
| |
- | setTitle("Simple");
| |
- |
| |
- | connect(new Window.DeleteEvent() {
| |
- | public boolean onDeleteEvent(Widget source, Event event) {
| |
- | Gtk.mainQuit();
| |
- | return false;
| |
- | }
| |
- | });
| |
- |
| |
- | setDefaultSize(250, 150);
| |
- | setPosition(WindowPosition.CENTER);
| |
- | show();
| |
- | }
| |
- |
| |
- | public static void main(String[] args) {
| |
- | Gtk.init(args);
| |
- | new GSimple();
| |
- | Gtk.main();
| |
- | }
| |
- | }
| |
- | </source>
| |
- |
| |
- | The code example shows a small window in the center of the screen.
| |
- |
| |
- | <source lang="java">
| |
- | import org.gnome.gdk.Event;
| |
- | import org.gnome.gtk.Gtk;
| |
- | import org.gnome.gtk.Widget;
| |
- | import org.gnome.gtk.Window;
| |
- | import org.gnome.gtk.WindowPosition;
| |
- | </source>
| |
- |
| |
- | We import all necessary objects.
| |
- |
| |
- | <source lang="java">
| |
- | public class GSimple extends Window {
| |
- | </source>
| |
- |
| |
- | Our application is based on the <b>Window</b> class.
| |
- | Window is a toplevel widget that is used as a container for other widgets.
| |
- |
| |
- | <source lang="java">
| |
- | setTitle("Simple");
| |
- |
| |
- | </source>
| |
- |
| |
- | Here we set the title for the window.
| |
- |
| |
- | <source lang="java">
| |
- | connect(new Window.DeleteEvent() {
| |
- | public boolean onDeleteEvent(Widget source, Event event) {
| |
- | Gtk.mainQuit();
| |
- | return false;
| |
- | }
| |
- | });
| |
- | </source>
| |
- |
| |
- | This code cleanly exits the Java Gnome application, if we close the window.
| |
- |
| |
- | <source lang="java">
| |
- | setDefaultSize(250, 150);
| |
- |
| |
- | </source>
| |
- |
| |
- | This line sets a default size for the window.
| |
- |
| |
- | <source lang="java">
| |
- | setPosition(WindowPosition.CENTER);
| |
- | </source>
| |
- |
| |
- | This line centers the window on the screen.
| |
- |
| |
- | <source lang="java">
| |
- | show();
| |
- |
| |
- | </source>
| |
- |
| |
- | Now we show the window. The window is not visible, until we call the <b>show()</b> method.
| |
- |
| |
- | <source lang="java">
| |
- | public static void main(String[] args) {
| |
- | Gtk.init(args);
| |
- | new GSimple();
| |
- | Gtk.main();
| |
- | }
| |
- | </source>
| |
- |
| |
- | The <b>main()</b> method is the entry point to the application. It initiates and runs the program.
| |
- |
| |
- | [[image: Java_Gnome_faq_simple.png| center]]
| |
- |
| |
- |
| |
- | == Icon ==
| |
- |
| |
- | In the next example, we show the application icon. Most window managers display the icon in the left corner of the titlebar and also on the taskbar.
| |
- |
| |
- | <source lang="java">
| |
- | package com.zetcode;
| |
- |
| |
- | import java.io.FileNotFoundException;
| |
- |
| |
- | import org.gnome.gdk.Event;
| |
- | import org.gnome.gdk.Pixbuf;
| |
- | import org.gnome.gtk.Gtk;
| |
- | import org.gnome.gtk.Widget;
| |
- | import org.gnome.gtk.Window;
| |
- | import org.gnome.gtk.WindowPosition;
| |
- |
| |
- |
| |
- | /**
| |
- | * ZetCode Java Gnome tutorial
| |
- | *
| |
- | * This program shows a small icon
| |
- | * in the top left corner of the window.
| |
- | *
| |
- | * @author jan bodnar
| |
- | * website zetcode.com
| |
- | * last modified March 2009
| |
- | */
| |
- |
| |
- | public class GIcon extends Window implements Window.DeleteEvent {
| |
- |
| |
- | Pixbuf icon;
| |
- |
| |
- | public GIcon() {
| |
- |
| |
- | setTitle("Icon");
| |
- |
| |
- | initUI();
| |
- |
| |
- | connect(this);
| |
- |
| |
- | setDefaultSize(250, 150);
| |
- | setPosition(WindowPosition.CENTER);
| |
- | show();
| |
- | }
| |
- |
| |
- | public void initUI() {
| |
- |
| |
- | try {
| |
- | icon = new Pixbuf("web.png");
| |
- | } catch (FileNotFoundException e) {
| |
- | e.printStackTrace();
| |
- | }
| |
- |
| |
- | setIcon(icon);
| |
- | }
| |
- |
| |
- | public boolean onDeleteEvent(Widget widget, Event event) {
| |
- | Gtk.mainQuit();
| |
- | return false;
| |
- | }
| |
- |
| |
- | public static void main(String[] args) {
| |
- |
| |
- | Gtk.init(args);
| |
- | new GIcon();
| |
- | Gtk.main();
| |
- | }
| |
- | }
| |
- | </source>
| |
- |
| |
- | The code example shows the application icon.
| |
- |
| |
- | <source lang="java">
| |
- | initUI();
| |
- | </source>
| |
- |
| |
- | We delegate the setup of the user interface to the <b>initUI()</b> method.
| |
- |
| |
- | <source lang="java">
| |
- | try {
| |
- | icon = new Pixbuf("web.png");
| |
- | } catch (FileNotFoundException e) {
| |
- | e.printStackTrace();
| |
- | }
| |
- | </source>
| |
- |
| |
- | We load a pixbuf from the file on the disk.
| |
- |
| |
- | <source lang="java">
| |
- | setIcon(icon);
| |
- | </source>
| |
- |
| |
- |
| |
- | The <b>setIcon()</b> method sets an icon for the window.
| |
- |
| |
- | [[image: Java_Gnome_faq_icon.png| center]]
| |
- |
| |
- | == Buttons ==
| |
- |
| |
- | In the next example, we will further enhance our programming skills with the Java Gnome library.
| |
- |
| |
- | <source lang="java">
| |
- |
| |
- | package com.zetcode;
| |
- |
| |
- | import org.gnome.gdk.Event;
| |
- | import org.gnome.gtk.Button;
| |
- | import org.gnome.gtk.Fixed;
| |
- | import org.gnome.gtk.Gtk;
| |
- | import org.gnome.gtk.Stock;
| |
- | import org.gnome.gtk.Widget;
| |
- | import org.gnome.gtk.Window;
| |
- | import org.gnome.gtk.WindowPosition;
| |
- |
| |
- | /**
| |
- | * ZetCode Java Gnome tutorial
| |
- | *
| |
- | * This program shows four buttons
| |
- | * with different characteristics.
| |
- | *
| |
- | * @author jan bodnar
| |
- | * website zetcode.com
| |
- | * last modified March 2009
| |
- | */
| |
- |
| |
- | public class GButtons extends Window {
| |
- |
| |
- | public GButtons() {
| |
- | setTitle("Buttons");
| |
- |
| |
- | 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() {
| |
- | Fixed fix = new Fixed();
| |
- |
| |
- | Button btn1 = new Button("Button");
| |
- | btn1.setSensitive(false);
| |
- | Button btn2 = new Button("Button");
| |
- | Button btn3 = new Button(Stock.CLOSE);
| |
- | Button btn4 = new Button("Button");
| |
- | btn4.setSizeRequest(80, 40);
| |
- |
| |
- | fix.put(btn1, 20, 30);
| |
- | fix.put(btn2, 100, 30);
| |
- | fix.put(btn3, 20, 80);
| |
- | fix.put(btn4, 100, 80);
| |
- |
| |
- | add(fix);
| |
- | }
| |
- |
| |
- | public static void main(String[] args) {
| |
- | Gtk.init(args);
| |
- | new GButtons();
| |
- | Gtk.main();
| |
- | }
| |
- | }
| |
- | </source>
| |
- |
| |
- | We show four different buttons on the window. We will see a difference between container widgets and child widgets and will change some properties of child widgets.
| |
- |
| |
- | <source lang="java">
| |
- | Fixed fix = new Fixed();
| |
- |
| |
- | </source>
| |
- |
| |
- | <b>Fixed</b> widget is a non visible container widget. It's purpose is to contain other child widgets.
| |
- |
| |
- | <source lang="java">
| |
- | Button btn1 = new Button("Button");
| |
- | </source>
| |
- |
| |
- | A <b>Button</b> is a child widget. Child widgets are placed inside containers.
| |
- |
| |
- | <source lang="java">
| |
- | btn1.setSensitive(false);
| |
- | </source>
| |
- |
| |
- | We make this button insensitive. This means, we cannot click on it. Graphically the widget is grayed out.
| |
- |
| |
- | <source lang="java">
| |
- | Button btn3 = new Button(Stock.CLOSE);
| |
- | </source>
| |
- |
| |
- | The third button shows an image inside it's area. The Java Gnome library has a built-in stock of images, that we can use.
| |
- |
| |
- | <source lang="java">
| |
- | btn4.setSizeRequest(80, 40);
| |
- | </source>
| |
- |
| |
- | Here we change the size of the button.
| |
- |
| |
- | <source lang="java">
| |
- | fix.put(btn1, 20, 30);
| |
- | fix.put(btn2, 100, 30);
| |
- | ...
| |
- | </source>
| |
- |
| |
- | Here we place button widgets inside fixed container widget.
| |
- |
| |
- | <source lang="java">
| |
- | add(fix);
| |
- | </source>
| |
- |
| |
- | We set the <b>Fixed</b> container to be the main container for our <b>Window</b> widget.
| |
- |
| |
- | <source lang="java">
| |
- | showAll();
| |
- | </source>
| |
- |
| |
- | We can either call <b>showAll()</b> method, which shows all widgets at once, or we call <b>show()</b> method on each of the widgets.
| |
- | Including containers.
| |
- |
| |
- | [[image: Java_Gnome_faq_buttons.png| center]]
| |
- |
| |
- | In this chapter, we created first programs in Java Gnome programming library.
| |
- |
| |
- | [[Категория:GTK+]]
| |
- | [[Категория:Java]]
| |