EXAMPLES These files are examples of specific parts of the java-gnome API worked up as complete Java programs. Source code, especially Java source code, doesn't always lend itself to being _read_, certainly not from top to bottom. We have attempted, however, to create some examples which are non-trivial but nonetheless are still readable. 1. Button in a Window * [`ExamplePressMe.java`](button/ExamplePressMe.html) It doesn't get any simpler than this. A [Label][] and a [Button][] in a [Window][], showing how to connect a listener to handle a [`CLICKED`][CLICKED] signal from the Button and how to ensure your application terminates when the Window is [deleted][DELETE_EVENT]. [Button]: /4.0/doc/api/org/gnome/gtk/Button.html [Label]: /4.0/doc/api/org/gnome/gtk/Label.html [Window]: /4.0/doc/api/org/gnome/gtk/Window.html [CLICKED]: /4.0/doc/api/org/gnome/gtk/Button.CLICKED.html [DELETE_EVENT]: /4.0/doc/api/org/gnome/gtk/Window.DELETE_EVENT.html 2. Handling keystrokes * [`ExampleSnooping.java`](keyboard/ExampleSnooping.html) Handling keyboard input is more complicated than it reasonably ought to be. In most cases the existing GTK Widgets already do everything that needs doing (when you type text into an Entry, the text does indeed go into that Entry), focus handling, etc. However, if you need to intercept a keystroke so you can do something special, then you need to work with the [Keyval][] and [ModifierType][] classes in response to the [`KEY_PRESS_EVENT`][KEY_PRESS_EVENT] signal. This is how. [Keyval]: /4.0/doc/api/org/gnome/gdk/Keyval.html [ModifierType]: /4.0/doc/api/org/gnome/gdk/ModifierType.html [KEY_PRESS_EVENT]: /4.0/doc/api/org/gnome/gtk/Widget.KEY_PRESS_EVENT.html 3. TreeView and TreeModel * [`ExampleTrailHeads.java`](treeview/ExampleTrailHeads.html) While not a complete tutorial, we have an example of a small application which uses a TreeView backed by a ListStore called `ExampleTrailHeads`. It is heavily commented and meant to serve as an introduction of the incredibly powerful yet very complex [TreeView][] / [TreeModel][] system. It should be read in conjunction with the API documentation for these types. You'll also want to read about how to setup a [ListStore][] and the explanation of available column types in [DataColumn][]. [TreeView]: /4.0/doc/api/org/gnome/gtk/TreeView.html [TreeModel]: /4.0/doc/api/org/gnome/gtk/TreeModel.html [ListStore]: /4.0/doc/api/org/gnome/gtk/ListStore.html [DataColumn]: /4.0/doc/api/org/gnome/gtk/DataColumn.html 4. Drawing with Cairo * [`ExampleDrawingInExposeEvent.java`](cairo/ExampleDrawingInExposeEvent.html) FIXME _this needs a better name._ Using the Cairo Graphics library to draw within a GTK program means following the idiom shown in this example. This program demonstrates drawing lines, rectangles, and gradients using a drawing [Context][] as obtained within a Widget's [EXPOSE_EVENT][] signal handler. [Context]: /4.0/doc/api/org/freedesktop/cairo/Context.html [EXPOSE_EVENT]: /4.0/doc/api/org/gnome/gtk/Widget.EXPOSE_EVENT.html