Ads 468x60px

Jumat, 09 Maret 2012

Inner Class dan Anonymous Inner Class

Bagian ini memberi Anda tinjauan ulang atas konsep yang sudah Anda pelajari di
pelajaran pemrograman pertama. Inner class dan anonymous inner class sangatlah
bermanfaat untuk GUI event handling.


Inner Class
Inner class, seperti namanya, adalah sebuah class yang dideklarasikan di dalam class
lain. Kegunaan inner classes akan dapat membantu Anda menyederhanakan program,
terutama dalam event handling seperti yang ditunjukkan pada contoh.


Contoh Menutup Window
import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame{
Label label;
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(new CFListener());
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
class CFListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(1);
}
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window
Example");
cf.launchFrame();
}
}


Anonymous Inner Class
Anonymous inner class adalah inner class tanpa nama. Kegunaan dari anonymous inner
class akan menyederhanakan kode-kode Anda lebih lanjut. Di bawah ini merupakan
modifikasi dari contoh bagian sebelumnya.


Contoh Menutup Window
import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame{
Label label;
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
dispose();
System.exit(1);
}
});
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}

post: http://dediknurdiantoro.blogspot.com/
Reade more >>

GUI Event Handling

Delegation Event Model


Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi
dari user. Untuk memahami model, pertama-tama mari kita pelajari melalui tiga
komponen utamanya.
1. Event Source
Event source mengacu pada komponen GUI yang meng-generate event. Sebagai
contoh, jika user menekan tombol, event source dalam hal ini adalah tombol.
2. Event Listener/Handler
Event listener menerima berita dari event-event dan proses-proses interaksi user.
Ketika tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah
informasi yang berguna untuk user.
3. Event Object
Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI),
sebuah object event diciptakan. Object berisi semua informasi yang perlu tentang
event yang telah terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti
ketika mouse telah di-klik. Ada beberapa class event untuk kategori yang berbeda
dari user action. Sebuah event object mempunyai tipe data mengenai salah satu dari
class ini.

Di bawah ini adalah delegation event model.

Pada awalnya, sebuah listener seharusnya diregistrasikan dengan sebuah source
sehingga dapat menerima informasi tentang event-event yang terjadi pada source
tersebut. Hanya listener yang sudah teregistrasi yang dapat menerima pemberitahuan
event-event. Ketika telah teregistrasi, sebuah listener hanya tinggal menunggu sampai
event terjadi.
Ketika sesuatu terjadi dengan event source, sebuah event object akan menguraikan
event yang diciptakan. Event kemudian ditembak oleh source pada listener yang
teregistrasi.
Saat listener menerima sebuah event object (pemberitahuan) dari source, dia akan
bekerja. Menerjemahkan pemberitahuan dan memproses event yang terjadi.

Registrasi Listeners

Event source mendaftarkan sebuah listener melalui method addListener.
void addListener(Listener listenerObj)
tergantung pada tipe dari event source. Dapat berupa Key, Mouse, Focus,
Component, Action dan lainnya.
Beberapa listeners dapat diregistrasi dengan satu event source untuk menerima
pemberitahuan event.
Listener yang telah teregistrasi dapat juga tidak diregistrasikan lagi menggunakan
method removeListener.
void removeListener(Listener listenerObj)




Class-Class Event


Sebuah event object mempunyai sebuah class event sebagai tipe data acuannya. Akar
dari hirarki class event adalah class EventObject, yang dapat ditemukan pada paket
java.util. Immediate subclass dari class EventObject adalah class AWTEvent. Class
AWTEvent didefinisikan pada paket java.awt. Itu merupakan akar dari semua AWTbased
events. Berikut ini beberapa dari class-class AWT event.

Catatan, bahwa semua subclass-subclass AWTEvent mengikuti konvensi nama berikut
ini:
Event

Event Listeners

Event listeners adalah class yang mengimplementasikan interfaces Listener.
Method ActionListener
Interface ActionListener hanya terdiri dari satu method.
Method ActionListener
public void actionPerformed(ActionEvent e)
Mengendalikan ActionEvent e yang terjadi.

Method MouseListener
Di bawah ini adalah method-method MouseListener yang seharusnya digunakan dalam
penerapan class.
Method-method MouseListener
public void mouseClicked(MouseEvent e)
Dipanggil pada saat tombol mouse di click (seperti tekan dan lepas).
public void mouseEntered(MouseEvent e)
Dipanggil pada saat kursor mouse memasuki area komponen.
public void mouseExited(MouseEvent e)
Dipanggil pada saat kursor mouse meninggalkan area komponen.
public void mousePressed(MouseEvent e)
Dipanggil pada saat tombol mouse ditekan di atas komponen
public void mouseReleased(MouseEvent e)
Dipanggil pada saat tombol mouse dilepas di atas komponen

Method-Method MouseMotionListener
MouseMotionListener mempunyai dua method untuk diimplementasikan.
Method-method MouseListener
public void mouseDragged(MouseEvent e)
Digunakan untuk memantau pergerakan mouse yang melintasi object pada saat tombol
mouse ditekan. Tindakan ini persis sama dengan tindakan pada saat memindahkan
sebuah window.
public void mouseMoved(MouseEvent e)
Digunakan untuk memantau pergerakan mouse pada saat mouse melintasi area suatu
object. Pada saat ini tidak ada mouse yang ditekan, hanya memindahkan pointer
mouse melalui object.

Method-Method WindowListener
Di bawah ini method-method dari interface WindowListener.
Method-method WindowListener
public void windowOpened(WindowEvent e)
Dipanggil pada saat object window dibuka (pertama kali window dibuat tampil).
public void windowClosing(WindowEvent e)
Dipanggil pada saat user mencoba untuk menutup object Window dari menu sistem
object.
public void windowClosed(WindowEvent e)
Dipanggil pada saat object Window ditutup setelah memanggil penempatan (misal,
release dari resource-resource yang digunakan oleh source) pada object.
public void windowActivated(WindowEvent e)
Dilibatkan ketika object Window adalah window yang aktif (window masih dipakai).
public void windowDeactivated(WindowEvent e)
Dilibatkan ketika object Window tidak lagi merupakan window yang aktif.
public void windowIconified(WindowEvent e)
Dipanggil ketika object Window di-minimize.
public void windowDeiconified(WindowEvent e)
Dipanggil ketika object Window kembali setelah di-minimize ke keadaan normal.

Petunjuk untuk Menciptakan Aplikasi Handling GUI Events
Berikut ini langkah-langkah yang Anda butuhkan untuk mengingat ketika ingin membuat
aplikasi GUI dengan event handling.
1. Buatlah sebuah class yang menguraikan dan membuat suatu tampilan dari aplikasi
GUI Anda.
2. Buatlah sebuah class yang menerapkan interface listener yang sesuai. Class ini boleh
mengacu pada class yang sama seperti pada langkah awal.
3. Dalam menerapkan class, gunakan semua method-method dengan interface listener
yang sesuai. Uraikan masing-masing method bagaimana Anda ingin mengendalikan
event-event. Anda dapat memberikan implementasi kosong untuk method yang tidak
ingin Anda gunakan.
4. Daftarkan object listener, instansiatiate dari class listener pada langkah 2, dengan
source component menggunakan method addListener.

Contoh Mouse Events
import java.awt.*;
import java.awt.event.*;
public class MouseEventsDemo extends Frame implements
MouseListener, MouseMotionListener {
TextField tf;
public MouseEventsDemo(String title){
super(title);
tf = new TextField(60);
addMouseListener(this);
}
public void launchFrame() {
/* Menambah komponen pada frame */
add(tf, BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
}
public void mouseClicked(MouseEvent me) {
String msg = "Mouse clicked.";
tf.setText(msg);
}
public void mouseEntered(MouseEvent me) {
String msg = "Mouse entered component.";
tf.setText(msg);
}
public void mouseExited(MouseEvent me) {
String msg = "Mouse exited component.";
tf.setText(msg);
}
public void mousePressed(MouseEvent me) {
String msg = "Mouse pressed.";
tf.setText(msg);
}
public void mouseReleased(MouseEvent me) {
String msg = "Mouse released.";
tf.setText(msg);
}
public void mouseDragged(MouseEvent me) {
String msg = "Mouse dragged at " + me.getX() + "," +
me.getY();
tf.setText(msg);
}
public void mouseMoved(MouseEvent me) {
String msg = "Mouse moved at " + me.getX() + "," +
me.getY();
tf.setText(msg);
}
public static void main(String args[]) {
MouseEventsDemo med = new MouseEventsDemo("Mouse Events
Demo");
med.launchFrame();
}
}
Contoh Menutup Window
import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame implements WindowListener {
Label label;
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(this);
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
public void windowActivated(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowOpened(WindowEvent e) {
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}

Class-class Adapter Class
Menerapkan semua method dari interface yang semuanya akan membutuhkan banyak
pekerjaan. Di satu sisi, Anda terkadang lebih sering tertarik menerapkan hanya
beberapa method dari interface saja. Untungnya, Java menyediakan untuk kita classclass
adapter yang menerapkan semua method dari masing-masing listener interface
dengan lebih dari satu method. Implementasi dari method-method semuanya adalah
kosong.

Close Window Example
import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame{
Label label;
CFListener w = new CFListener(this);
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(w);
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}
class CFListener extends WindowAdapter{
CloseFrame ref;
CFListener( CloseFrame ref ){
this.ref = ref;
}
public void windowClosing(WindowEvent e) {
ref.dispose();
System.exit(1);
}
}
sumber: JENI




Reade more >>

Kamis, 08 Maret 2012

Pengertian Enkripsi dan Deskripsi

Keamanan data adalah hal yang sangat penting,sesuai yang dibilang ama pak Chandra(Dosen gw) kalo didunia komputer "Keamanan Berbanding Terbalik dengan Kenyamanan". Banyak pengguna komputer rela membayar mahal untuk hal yang satu ini. Dan metode enkripsi adalah salah satu pilihan yang dapat dilakukan dari masalah keamanan data tersebut.

jika ingin ngomongin mengenai enkripsi, maka hal tersebut tidak akan terpisah dengan apa yang dinamakan Kriptografi(Cryptography). Dimana kriptografi adalah studi tentang cara-cara menyamarkan/menyandikan pesan yang bertujuan untuk menghindari perolehan pesan secara tidak sah.

sedangkan didalam kriptografi itu sendiri terdapat dua proses penting, yaitu enkripsi dan dekripsi. ngomong-2 pada tahu enkripsi ama dekripsi jadi, Enkripsi adalah suatu cara untuk menyandikan suatu informasi menjadi sebuah kode-kode rahasia.Sedangkan Dekripsi adalah metode untuk mengubah kode-kode rahasia tadi menjadi data informasi dengan menggunakan kunci rahasia (baik itu public key maupun private key).gitu prenn kurang lebih definisi nya,,,lanjut

Bila ingin mengamankan data yang anda miliki Enkripsi adalah salah satu solusi yang dapat dipergunakan,kita ga ingin kan ketika kita mengirim email tahu-2 ditengah perjalanan dibajak ama orang yang ga bertanggung jawab. Dengan menggunakan aplikasi enkripsi, paling tidak kita akan meminimalisasi pembajak terhadap data kita.

Bit Kunci dan Blok Data
banyak banget jenis Enkripsi dan setiap enkripsi dibedakan berdasar besar bit kunci dan besar blok datanya. Dari mulai bit kunci 8-bit,sampai 256 bit. dan dari 64-bit hingga 512-bit besar blok data. Mengapa bit kunci dan blok data penting?,karena kekuatan dari enkripsi terletak dalam tiga hal, yaitu besar bit kunci, bear blok data, dan metode pengulangan yang dilakukan didalamnya. semakin besar blok kunci, semakin kecil blok data dan semakin banyak pengulangan yang dilakukan maka enkripsi tersebut bisa dibilang cukup tangguh, dan begitu juga sebaliknya.

Aplikasi Enkripsi
ada banyak buanget aplikasi enkripsi, salah satunya Encryption Protection yang bisa temen-2 gali infonya di www.encryptionprotection.com  dan Wincrypt Shareware 2.2 untuk lebih Advadce mengenai aplikasi kini temen- bisa berkunjung ke www.wincrypt.com 

Sumber : http://adeut.blogspot.com  
Reade more >>

Komponen Swing

Swing toolkit menyediakan banyak sekali komponen untuk
membangun aplikasi GUI desktop. Swing toolkit juga menyediakan
class-class untuk menangani interaksi antara aplikasi dan user
menggunakan standard input seperti keyboard dan mouse.
Komponen-komponen yang disediakan swing mencakup semua GUI
toolkit yang lazim digunakan dalam apilasi desktop, seperti : JTabel,
JList, JTree, JButton, JLabel dan masih banyak komponenkomponen
lainnya yang sudah teruji dan siap pakai.
Selain komponen GUI, swing juga menyediakan fasilitas untuk
proses undo, komponen untuk mengolah text, internationalization,
Komponen GUI yang mendukung penyandang cacat (accessibility
support) dan fasilitas drag-and-drop.
Look and Feel merupakan fasilitas yang unik dalam swing. Dengan
fasilitas Look and Feel ini kita bisa dengan mudah merubah
tampilan dari program kita sesuai dengan keinginan dan tujuan
kita. Misalnya, agar program terlihat fancy atau agar program
terlihat konsisten dalam segala keadaan.
Swing juga menyediakan library Java 2D untuk pengolahan data
secara visual, seperti mengolah gambar, object 2D, bahkan animasi.
SwingLabs.org menyediakan libary Swing Painter yang merupakan
pengembangan dari Java 2D, Swing Painter ini memungkinkan
aplikasi swing mempunyai tampilan yang indah dan terlihat
profesional.
Java 6.0 menambahkan banyak sekali fitur-fitur baru ke dalam
package swing, termasuk dukungan untuk library OpenGL
menggunakan JOGL, Tray Icon dan Web Service. Dengan adanya dukungan ini swing menjadi lebih poweful dan mempunyai masa
depan yang cerah.
Struktur Komponen Swing
Secara arsitektur, Swing dibangun diatas arsitektur AWT (Abstract
Windows Toolkit). AWT adalah GUI toolkit yang dikembangkan oleh
Sun engineer sebelum swing muncul. Kelemahan utama AWT
adalah fleksibilitas tampilan GUI, seperti painting method yang
masih sangat primitif.
Swing dimaksudkan untuk memperbaiki kekurangan dari AWT
tanpa harus membuang teknologi yang sudah dibuat dan membuat
GUI toolkit baru dari nol.
Komponen AWT diletakkan dalam satu package yaitu java.awt,
didalamnya terdapat komponen-komponen GUI dasar, salah
satunya adalah Component. Class Component adalah moyang dari
sebagian besar komponen AWT maupun Swing. CheckBox, Label,
Button dan beberapa komponen AWT lainnya adalah turunan
langsung dari class Component. Namun dalam kenyataanya
arsitektur demikian tidak memberikan fleksibilitas yang cukup
memadai untuk membuat berbagai macam komponen baru yang
dibutuhkan dalam desktop application.
Swing muncul dengan membawa teknologi AWT yang telah
ditambahkan dengan banyak kemampuan. Nyaris semua komponen
GUI dari swing merupakan turunan class Container dan class
Container adalah turunan dari class Component.
Bekerja dengan JLabel, JTextField dan
JButton
Bekerja dengan komponen swing menggunakan Matisse sangat menyenangkan dan mudah. GroupLayout yang sangat fleksibel
memungkinkan kita untuk membuat aplikasi dengan tampilan
seperti yang kita harapkan.
Label, textfield dan tombol adalah komponen-komponen dasar yang
selalu ada dalam setiap aplikasi berbasis desktop. Ketiga komponen
ini mempunyai fungsi yang sangat sederhana, textfield menyimpan
data berbentuk text (string) yang relatif pendek , label banyak
digunakan untuk memberikan keterangan penjelas terhadap
komponen lain dan tombol digunakan user untuk menjalankan satu
instruksi tertentu.
Berikut ini adalah contoh aplikasi sederhana yang melakukan
penjumlahan dua buah bilangan.

Untuk membuat aplikasi ini menggunakan Matisse, lakukan
langkah-langkah berikut ini:
1. Buat project baru di Netbeans (kalau sudah membuat project,
tidak perlu membuat lagi) dengan cara memilih menu :
File > New Project
Kemudian ikuti petunjuk yang diberikan dialog.
2. Buat class JFrame baru, caranya dengan memilih menu :
File > New File
Kemudian akan muncul dialog seperti di bawah ini :


3. Pilih kategori :
Java GUI Forms > JFrame Form
Seperti terlihat di dialog New File dialog diatas, kemudian beri
nama Penjumlahan.java
4. Buat tampilan form seperti gambar bawah ini, caranya dengan
klik Jendela Pallete di sebalah kanan untuk memilih komponen
apa yang akan dibuat, kemudian klik di jendela Design untuk
menempatkan komponen yang sudah dipilih tadi ke dalam
form. Hasilnya terlihat seperti pada gambar di bawah ini:


5. Ganti nama setiap komponen agar mudah dikenali. Klik kanan
diatas setiap komponen yang ada dalam Jendela Design diatas,
kemudian pilih menu :
Klik kanan > Change Variable Name ...
Ganti nama komponen-komponen tersebut (sesuai urutan dari
kiri ke kanan, atas ke bawah) menjadi : lblKeterangan, txtA,
lblPlus, txtB, btnHitung, lblHasil.
6. Menambahkan variable untuk menampung nilai yang akan
dijumlahkan. Klik tombol Source untuk membuka jendela yang
menampilkan kode sumber dari program di atas kemudian
tambahkan kode di bawah ini tepat dibawah definisi dari class
Penjumlahan:
private String str = "Hasilnya adalah : ";
private int a, b;
7. Menangani penekanan tombol btnHitung. Klik kanan diatas
komponen btnHitung kemudian pilih menu :
Events > Action > actionPerformed
Anda akan dibawa ke jendela Source, dan akan menemukan
kode program seperti di bawah ini :
private void btnHitungActionPerformed(
java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
Ubah kode program diatas menjadi :
private void btnHitungActionPerformed(
java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
a = Integer.parseInt(txtA.getText());
b = Integer.parseInt(txtB.getText());
int hasil = a + b;
lblHasil.setText(str + hasil);
}
8. Compile dan jalankan program. Tekan tombol SHIFT + F6, atau
klik kanan file Penjumlahan.java kemudian pilih menu Run File.
Catatan :
● Method Integer.parseInt digunakan untuk merubah String
menjadi Integer.
● Method btnHitungActionPerformed akan dipanggil setiap kali
kita memencet tombol btnHitung.
Sekarang anda bisa melihat bahwa bekerja dengan JLabel,
JTextField dan JButton sangat sederhana. Untuk latihan, silahkan
rubah fungsi yang digunakan dalam program diatas, misalnya
perkalian dua bilangan atau pengurangan dua bilangan.
post: http://dediknurdiantoro.blogspot.com/








Reade more >>

Rabu, 07 Maret 2012

GUI JavaGNOME Pada Java

·         JavaGNOME – Community Product
Kalau QtJambi diatas ditujukan untuk teman-teman yang sudah akrab dengan API (Application Programming Interface) Qt Framework, berbeda dengan JavaGNOME :) Proyek ini lebih dikhususkan untuk teman-teman pecinta GTK atau yang paling banyak dikenal yaitu GNOME :) Sama seperti GUI Toolkit SWT dan QTJambi, JavaGNOME ini juga mengakses native library tetapi API yang digunakan adalah API dari GTK. Untuk teman-teman yang sudah terbiasa membangun aplikasi menggunakan Glade, maka teman-teman bisa men-design form-nya menggunakan Glade dan memanggil-nya menggunakan bahasa java melalui JavaGNOME :) Nah ingin tahu tampilan aplikasi yang dibangun menggunakan JavaGNOME ? Jika ya, silahkan cek screenshot dibawah ini :

ContohJavaGNOME
·         Contoh Menu JavaGNOME

·         Nah jika teman-teman ingin coba-coba membangun aplikasi menggunakan JavaGNOME, maka teman-teman harus menambahkan 1 buah library yaitu gtk-4.0.jar pada project yang akan teman-teman buat dan 1 tambahkan file libgtkjni-4.0.13.so pada direktori /usr/lib/jni di sistem teman-teman maupun pada sistem target. Dan yang perlu teman-teman ingat yaitu “PASTIKAN KEBUTUHAN SELURUH DEPENDENCIES BESERTA NOMOR VERSI LIBRARY YANG DIBUTUHKAN ITU SAMA”jika tidak bisa dipastikan ada saja masalah-nya :D :) Nah kalau teman-teman ingin tahu bagaimana source code dari tampilan menu diatas, sekarang mari kita lihat kode dibawah ini :)


/*

 * java-gnome, a UI library for writing GTK and GNOME programs from Java!
 *
 * Copyright © 2007      Vreixo Formoso
 * Copyright © 2007-2010 Operational Dynamics Consulting, Pty Ltd
 *
 * The code in this file, and the program it is a part of, is made available
 * to you by its authors as open source software: you can redistribute it
 * and/or modify it under the terms of the GNU General Public License version
 * 2 ("GPL") as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GPL for more details.
 *
 * You should have received a copy of the GPL along with this program. If not,
 * see http://www.gnu.org/licenses/. The authors of this program may be
 * contacted through http://java-gnome.sourceforge.net/.
 */
package javagnomeapplication;

import org.gnome.gdk.Event;
import org.gnome.gtk.CheckMenuItem;
import org.gnome.gtk.Gtk;
import org.gnome.gtk.ImageMenuItem;
import org.gnome.gtk.Label;
import org.gnome.gtk.Menu;
import org.gnome.gtk.MenuBar;
import org.gnome.gtk.MenuItem;
import org.gnome.gtk.SeparatorMenuItem;
import org.gnome.gtk.Stock;
import org.gnome.gtk.VBox;
import org.gnome.gtk.Widget;
import org.gnome.gtk.Window;

/**
 * How to use {@link Menu} and related Widgets.
 *
 * @author Vreixo Formoso
 * @author Andrew Cowie
 */
public class ExampleSimpleMenu {

    public ExampleSimpleMenu() {
        final Window w;
        final VBox x;
        final Label l;
        final Menu fileMenu, editMenu, viewMenu;
        final MenuItem fileNew, fileMenuItem, editMenuItem, viewMenuItem;
        final MenuBar menuBar;

        /*
         * Begin with the standard VBox in a Window setup:
         */

        w = new Window();
        w.setTitle("JavaGNOME Example - ");
        x = new VBox(false, 3);
        w.add(x);

        l = new Label("Select an action in a menu");
        l.setWidthChars(30);
        l.setAlignment(0.0f, 0.5f);

        /*
         * Most applications will use several Menus in a MenuBar:
         */
        fileMenu = new Menu();
        editMenu = new Menu();
        viewMenu = new Menu();

        /*
         * Now you can add MenuItems to the "file" Menu.
         */
        fileNew = new MenuItem("_New");
        fileMenu.append(fileNew);

        /*
         * Usually you will want to connect to the MenuItem.Activate signal,
         * that is emitted when the user "activates" the menu by either
         * clicking it with the mouse or navigating to it with the keyboard
         * and pressing .
         */
        fileNew.connect(new MenuItem.Activate() {

            public void onActivate(MenuItem source) {
                l.setLabel("You have selected File->New menu.");
            }
        });

        /*
         * Given that in most cases you will connect to the MenuItem.Activate
         * signal on MenuItems, a convenience constructor is provided:
         */
        fileMenu.append(new MenuItem("_Save", new MenuItem.Activate() {

            public void onActivate(MenuItem source) {
                l.setLabel("You have selected File->Save.");
            }
        }));

        /*
         * A SeparatorMenuItem can be used to differentiate between unrelated
         * menu options; in practise, though, only use sparingly.
         */
        fileMenu.append(new SeparatorMenuItem());

        fileMenu.append(new ImageMenuItem(Stock.CLOSE, new MenuItem.Activate() {

            public void onActivate(MenuItem source) {
                l.setLabel("You have selected File->Close.");
            }
        }));
        fileMenu.append(new MenuItem("_Quit", new MenuItem.Activate() {

            public void onActivate(MenuItem source) {
                Gtk.mainQuit();
            }
        }));

        /*
         * And now add the items making up the "edit" Menu.
         */
        editMenu.append(new MenuItem("_Copy", new MenuItem.Activate() {

            public void onActivate(MenuItem source) {
                l.setLabel("You have selected Edit->Copy.");
            }
        }));
        editMenu.append(new MenuItem("_Paste", new MenuItem.Activate() {

            public void onActivate(MenuItem source) {
                l.setLabel("You have selected Edit->Paste.");
            }
        }));

        /*
         * CheckMenuItems hold a boolean state. One use is to allow users to
         * hide some parts of the GUI, as in this example which we put into
         * the "view" Menu:
         */
        viewMenu.append(new CheckMenuItem("Hide _text", new CheckMenuItem.Toggled() {

            public void onToggled(CheckMenuItem source) {
                if (source.getActive()) {
                    l.hide();
                } else {
                    l.show();
                }
            }
        }));

        /*
         * A MenuItem can have a "sub-menu", that will be expanded when the
         * user puts the mouse pointer over it. This is also used in creating
         * the elements for the top level MenuBar, but you can use it within
         * normal Menus as well. That said, submenus of Menus are considered
         * less "discoverable" because the user has to navigate through the
         * hierarchy to find out what options are available to them, rather
         * than seeing them at first glance.
         */
        fileMenuItem = new MenuItem("_File");
        fileMenuItem.setSubmenu(fileMenu);
        editMenuItem = new MenuItem("_Edit");
        editMenuItem.setSubmenu(editMenu);
        viewMenuItem = new MenuItem("_View");
        viewMenuItem.setSubmenu(viewMenu);

        /*
         * Finally, most applications make use of a MenuBar that is by
         * convention located at the top of the application Window. It
         * contains the top-level MenuItems.
         */
        menuBar = new MenuBar();
        menuBar.append(fileMenuItem);
        menuBar.append(editMenuItem);
        menuBar.append(viewMenuItem);

        /*
         * Finally, pack the Widgets into the VBox, and present:
         */
        x.packStart(menuBar, false, false, 0);
        x.packStart(l, false, false, 0);

        w.showAll();

        /*
         * And that's it! One last piece of house keeping, though: it is
         * always necessary to deal with the user closing (what is in this
         * case) the last Window in the application; otherwise the Java VM
         * will keep running even after the (sole) Window is closed - because
         * the main loop never returned.
         */
        w.connect(new Window.DeleteEvent() {

            public boolean onDeleteEvent(Widget source, Event event) {
                Gtk.mainQuit();
                return false;
            }
        });
    }

    public static void main(String[] args) {
        Gtk.init(args);

        new ExampleSimpleMenu();

        /*
         * Yes, you could have written all the Window creation code here in
         * main() but it is generally good practise to put that setup into a
         * constructor, as we have here.
         */

        Gtk.main();
    }
}

sumber: http://martinusadyh.web.id

post: http://dediknurdiantoro.blogspot.com/


Reade more >>

clock