Java Gnome FAQ Events

Материал из Wiki.crossplatform.ru

(Различия между версиями)
Перейти к: навигация, поиск
(нарушало авторские права)
 
Строка 1: Строка 1:
-
In this part of the Java Gnome programming tutorial, we will talk about events.
 
-
__TOC__
 
-
 
-
Java Gnome library is an event driven system. All GUI applications are event driven.
 
-
The applications start a main loop, which continuously checks for newly generated events. If there is no event, the application waits and does nothing.
 
-
 
-
== Simple event example ==
 
-
 
-
The next example shows, how we react to two basic events.
 
-
 
-
<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.Widget;
 
-
import org.gnome.gtk.Window;
 
-
import org.gnome.gtk.WindowPosition;
 
-
 
-
/**
 
-
* Java Gnome tutorial
 
-
*
 
-
* This program demonstrates two
 
-
* basic events.
 
-
*
 
-
* @author jan bodnar
 
-
* website zetcode.com
 
-
* last modified March 2009
 
-
*/
 
-
 
-
public class GButton extends Window  {
 
-
 
-
    public GButton() {
 
-
   
 
-
        setTitle("Button");
 
-
   
 
-
        initUI();
 
-
 
-
        setPosition(WindowPosition.CENTER);
 
-
        showAll();
 
-
    }
 
-
   
 
-
    public void initUI() {
 
-
   
 
-
        connect(new Window.DeleteEvent() {
 
-
            public boolean onDeleteEvent(Widget source, Event event) {
 
-
                Gtk.mainQuit();
 
-
                return false;
 
-
            }
 
-
        });
 
-
   
 
-
        Fixed fixed = new Fixed();
 
-
       
 
-
        Button quit = new Button("Quit");
 
-
        quit.connect(new Button.Clicked() {
 
-
 
-
            public void onClicked(Button button) {
 
-
                Gtk.mainQuit();
 
-
            }
 
-
        });
 
-
 
-
        quit.setSizeRequest(80, 35);
 
-
        fixed.put(quit, 50, 50);
 
-
        add(fixed);       
 
-
       
 
-
        setSizeRequest(250, 200);
 
-
    }
 
-
   
 
-
    public static void main(String[] args) {
 
-
 
-
        Gtk.init(args);
 
-
        new GButton();
 
-
        Gtk.main();
 
-
    }
 
-
}
 
-
</source>
 
-
 
-
In our code example, we react to two events. Delete event and click event.
 
-
The delete event is triggered, when we close the window. By default, the window is destroyed but the application does not quit. We must explicitely quit the program.
 
-
 
-
<source lang="java">
 
-
connect(new Window.DeleteEvent() {
 
-
    public boolean onDeleteEvent(Widget source, Event event) {
 
-
        Gtk.mainQuit();
 
-
        return false;
 
-
    }
 
-
});
 
-
 
-
</source>
 
-
 
-
If we click on the close button of the window, the window is destroyed.
 
-
But the application is not fully destroyed. We must call the <b>Gtk.mainQuit()</b> to end the application.
 
-
We use the <b>connect()</b> method to connect a callback method to a specific event type. In our case it is the <b>DeleteEvent</b>.
 
-
 
-
<source lang="java">
 
-
  quit.connect(new Button.Clicked() {
 
-
      public void onClicked(Button button) {
 
-
          Gtk.mainQuit();
 
-
      }
 
-
  });
 
-
 
-
</source>
 
-
 
-
When we click on the button widget, the <b>onClicked()</b> method is triggered. We quit the application in reaction to the button click.
 
-
 
-
== Moving window ==
 
-
 
-
The next example shows, how we react to move events of a window.
 
-
We show the current position of the upper left corner of the window  in the titlebar.
 
-
 
-
<source lang="java">
 
-
package com.zetcode;
 
-
 
-
import org.gnome.gdk.Event;
 
-
import org.gnome.gdk.EventConfigure;
 
-
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 demonstrates the
 
-
* configure event.
 
-
*
 
-
* @author jan bodnar
 
-
* website zetcode.com
 
-
* last modified March 2009
 
-
*/
 
-
 
-
public class GMoveWindow extends Window
 
-
        implements Window.ConfigureEvent {
 
-
 
-
 
-
    public GMoveWindow()  {
 
-
 
-
               
 
-
        connect(new Window.DeleteEvent() {
 
-
            public boolean onDeleteEvent(Widget source, Event event) {
 
-
                Gtk.mainQuit();
 
-
                return false;
 
-
            }
 
-
        });
 
-
 
-
        connect(this);
 
-
       
 
-
        setPosition(WindowPosition.CENTER);
 
-
       
 
-
        setTitle("");
 
-
        resize(250, 200);
 
-
        showAll();
 
-
    }
 
-
   
 
-
    public boolean onConfigureEvent(Widget widget,
 
-
        EventConfigure eventConfigure) {
 
-
                                   
 
-
        int x = eventConfigure.getX();
 
-
        int y = eventConfigure.getY();
 
-
       
 
-
        setTitle(x + ", " + y);
 
-
        return false;
 
-
    }
 
-
   
 
-
    public static void main(String[] args) {
 
-
        Gtk.init(args);
 
-
        new GMoveWindow();
 
-
        Gtk.main();
 
-
    }
 
-
}
 
-
</source>
 
-
 
-
Resizing and moving windows end up in <b>ConfigureEvent</b> being created.
 
-
 
-
<source lang="java">
 
-
public boolean onConfigureEvent(Widget widget,
 
-
    EventConfigure eventConfigure) {
 
-
                                   
 
-
    int x = eventConfigure.getX();
 
-
    int y = eventConfigure.getY();
 
-
       
 
-
    setTitle(x + ", " + y);
 
-
    return false;
 
-
}
 
-
</source>
 
-
 
-
We set the x, y coordinates of the window to the titlebar of the window.
 
-
 
-
[[image: Java_Gnome_faq_move.png| center]]
 
-
 
-
== EnterNotifyEvent ==
 
-
 
-
<b>EnterNotifyEvent</b> is emitted, when we enter the area of a widget with a mouse pointer.
 
-
 
-
<source lang="java">
 
-
package com.zetcode;
 
-
 
-
import org.gnome.gdk.Color;
 
-
import org.gnome.gdk.Event;
 
-
import org.gnome.gdk.EventCrossing;
 
-
import org.gnome.gtk.Button;
 
-
import org.gnome.gtk.Fixed;
 
-
import org.gnome.gtk.Gtk;
 
-
import org.gnome.gtk.StateType;
 
-
import org.gnome.gtk.Widget;
 
-
import org.gnome.gtk.Window;
 
-
import org.gnome.gtk.WindowPosition;
 
-
 
-
/**
 
-
* ZetCode Java Gnome tutorial
 
-
*
 
-
* This program demonstrates the
 
-
* EnterNotifyEvent.
 
-
*
 
-
* @author jan bodnar
 
-
* website zetcode.com
 
-
* last modified March 2009
 
-
*/
 
-
 
-
public class GEnterNotifyEvent extends Window {
 
-
 
-
    private Color lightGray = new Color(55000, 55000, 55000);
 
-
 
-
 
-
    public GEnterNotifyEvent() {
 
-
   
 
-
        setTitle("EnterNotifyEvent");
 
-
       
 
-
        initUI();
 
-
       
 
-
        connect(new Window.DeleteEvent() {
 
-
            public boolean onDeleteEvent(Widget source, Event event) {
 
-
                Gtk.mainQuit();
 
-
                return false;
 
-
            }
 
-
        });
 
-
   
 
-
        setDefaultSize(250, 150);
 
-
        setPosition(WindowPosition.CENTER);
 
-
        showAll();
 
-
    }
 
-
   
 
-
   
 
-
   
 
-
    public void initUI() {
 
-
   
 
-
        Button button = new Button("Button");
 
-
        button.setSizeRequest(80, 30);
 
-
       
 
-
        button.connect(new Button.EnterNotifyEvent() {
 
-
            public boolean onEnterNotifyEvent(Widget widget,
 
-
                        EventCrossing eventCrossing) {
 
-
 
-
                widget.modifyBackground(StateType.PRELIGHT, lightGray);
 
-
       
 
-
                return false;
 
-
            }
 
-
        });
 
-
 
-
        Fixed fix = new Fixed();
 
-
        fix.put(button, 20, 20);
 
-
        add(fix);
 
-
    }
 
-
   
 
-
    public static void main(String[] args) {
 
-
        Gtk.init(args);
 
-
        new GEnterNotifyEvent();
 
-
        Gtk.main();
 
-
    }
 
-
}
 
-
</source>
 
-
 
-
We will change the background color of the button widget, once we hover a mouse pointer over it.
 
-
 
-
<source lang="java">
 
-
 
-
  button.connect(new Button.EnterNotifyEvent() {
 
-
      public boolean onEnterNotifyEvent(Widget widget,
 
-
          EventCrossing eventCrossing) {
 
-
          widget.modifyBackground(StateType.PRELIGHT, lightGray);
 
-
          return false;
 
-
      }
 
-
  });
 
-
</source>
 
-
 
-
Here we react to the <b>EnterNotifyEvent</b>.
 
-
 
-
<source lang="java">
 
-
widget.modifyBackground(StateType.PRELIGHT, lightGray);
 
-
</source>
 
-
 
-
We modify the color of the button's background.
 
-
 
-
This chapter was about events in Java Gnome.
 
-
 
-
 
-
 
-
[[Категория:GTK+]]
 
-
[[Категория:Java]]
 

Текущая версия на 11:22, 7 апреля 2009