WindowStateListener

Home » » WindowStateListener

WindowStateListener
Java.awt  : AWT(Abstract Window Toolkit) merupakan sekulmpulan library yang tidak tergantung pada platfrom serta digunakan untuk menyederhanakan implementasi user-interface.
java.awt.event  Menyediakan interface dan kelas untuk menangani berbagai jenis peristiwa yang ditunjuk oleh komponen AWT.
1). Kelas di java.awt yang menerapkan WindowStateListener
- AWTEventMulticaster
AWTEventMulticaster mengimplementasikan event multi-cor efisien dan benang-aman pengiriman untuk acara AWT didefinisikan dalam paket java.awt.event.
2).Methods  dalam java.awt yang kembali WindowStateListener
      -static WindowStateListener
      AWTEventMulticaster.add(WindowStateListener a, WindowStateListener b)
      -WindowStateListener[]
      Window.getWindowStateListeners()
      -static WindowStateListener
            AWTEventMulticaster.remove(WindowStateListener l,       WindowStateListener oldl)
3).Methods di java.awt dengan parameter tipe WindowStateListener
      - static WindowStateListener
      1. AWTEventMulticaster.add(WindowStateListener a,     WindowStateListener b)
      2. AWTEventMulticaster.remove(WindowStateListener l, WindowStateListener oldl)
-Void
      1.Window.addWindowStateListener(WindowStateListener l)
      2.Window.removeWindowStateListener(WindowStateListener l)
4).Class di java.awt.event yang menerapkan WindowStateListener
Class
      WindowAdapter


Sebuah kelas adaptor abstrak untuk menerima peristiwa jendela.
Pengertian WindowStateListener adalah tampilan antar muka meluas melalui EventListener untuk mendapatkan informasi dari class windowListener kelas yang ber funsi untuk mengimplementasikan antarmuka ini (dan semua metode yang dikandungnya) atau memperluas kelas WindowAdapter abstrak
Kelas opjek yang terdaftar dengan jendela menggunakan metode Window addWindowStateListener.perubahan berdasarkan simbul ketika dipanggil metode windowStateChanged di objek pendengar dipanggil, dan WindowEvent dilewatkan untuk itu.

Method

Void      windowStateChanged(WindowEvent e)

Cara penulisan method  windowStateChanged(WindowEvent e)

Contoh
Tampilan




Kode Program

====================================================================
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package windoweventdemo;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.awt.event.WindowListener;
import java.awt.event.WindowStateListener;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.Timer;
/**
 *
 * @author assalaam
 */
public class WindowEventDemo extends JPanel implements WindowListener,
    WindowFocusListener, WindowStateListener {
  final static String newline = "\n";

  final static String space = "    ";

  static JFrame frame;

  JTextArea display;

  public WindowEventDemo() {
    super(new BorderLayout());
    display = new JTextArea();
    display.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(display);
    scrollPane.setPreferredSize(new Dimension(500, 450));
    add(scrollPane, BorderLayout.CENTER);

    frame.addWindowListener(this);
    frame.addWindowFocusListener(this);
    frame.addWindowStateListener(this);

    checkWM();
  }

  //Some window managers don't support all window states.
  //For example, dtwm doesn't support true maximization,
  //but mimics it by resizing the window to be the size
  //of the screen. In this case the window does not fire
  //the MAXIMIZED_ constants on the window's state listener.
  //Microsoft Windows supports MAXIMIZED_BOTH, but not
  //MAXIMIZED_VERT or MAXIMIZED_HORIZ.
  public void checkWM() {
    Toolkit tk = frame.getToolkit();
    if (!(tk.isFrameStateSupported(Frame.ICONIFIED))) {
      displayMessage("Your window manager doesn't support ICONIFIED.");
    }
    if (!(tk.isFrameStateSupported(Frame.MAXIMIZED_VERT))) {
      displayMessage("Your window manager doesn't support MAXIMIZED_VERT.");
    }
    if (!(tk.isFrameStateSupported(Frame.MAXIMIZED_HORIZ))) {
      displayMessage("Your window manager doesn't support MAXIMIZED_HORIZ.");
    }
    if (!(tk.isFrameStateSupported(Frame.MAXIMIZED_BOTH))) {
      displayMessage("Your window manager doesn't support MAXIMIZED_BOTH.");
    } else {
      displayMessage("Your window manager supports MAXIMIZED_BOTH.");
    }
  }

  public void windowClosing(WindowEvent e) {
    displayMessage("WindowListener method called: windowClosing.");

    //A pause so user can see the message before
    //the window actually closes.
    ActionListener task = new ActionListener() {
      boolean alreadyDisposed = false;

      public void actionPerformed(ActionEvent e) {
        if (!alreadyDisposed) {
          alreadyDisposed = true;
          frame.dispose();
        } else { //make sure the program exits
          System.exit(0);
        }
      }
    };
    Timer timer = new Timer(500, task); //fire every half second
    timer.setInitialDelay(2000); //first delay 2 seconds
    timer.start();
  }

  public void windowClosed(WindowEvent e) {
    //This will only be seen on standard output.
    displayMessage("WindowListener method called: windowClosed.");
  }

  public void windowOpened(WindowEvent e) {
    displayMessage("WindowListener method called: windowOpened.");
  }

  public void windowIconified(WindowEvent e) {
    displayMessage("WindowListener method called: windowIconified.");
  }

  public void windowDeiconified(WindowEvent e) {
    displayMessage("WindowListener method called: windowDeiconified.");
  }

  public void windowActivated(WindowEvent e) {
    displayMessage("WindowListener method called: windowActivated.");
  }

  public void windowDeactivated(WindowEvent e) {
    displayMessage("WindowListener method called: windowDeactivated.");
  }

  public void windowGainedFocus(WindowEvent e) {
    displayMessage("WindowFocusListener method called: windowGainedFocus.");
  }

  public void windowLostFocus(WindowEvent e) {
    displayMessage("WindowFocusListener method called: windowLostFocus.");
  }

  public void windowStateChanged(WindowEvent e) {
    displayStateMessage(
        "WindowStateListener method called: windowStateChanged.", e);
  }

  void displayMessage(String msg) {
    display.append(msg + newline);
    System.out.println(msg);
  }

  void displayStateMessage(String prefix, WindowEvent e) {
    int state = e.getNewState();
    int oldState = e.getOldState();
    String msg = prefix + newline + space + "New state: "
        + convertStateToString(state) + newline + space + "Old state: "
        + convertStateToString(oldState);
    display.append(msg + newline);
    System.out.println(msg);
  }

  String convertStateToString(int state) {
    if (state == Frame.NORMAL) {
      return "NORMAL";
    }
    if ((state & Frame.ICONIFIED) != 0) {
      return "ICONIFIED";
    }
    //MAXIMIZED_BOTH is a concatenation of two bits, so
    //we need to test for an exact match.
    if ((state & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH) {
      return "MAXIMIZED_BOTH";
    }
    if ((state & Frame.MAXIMIZED_VERT) != 0) {
      return "MAXIMIZED_VERT";
    }
    if ((state & Frame.MAXIMIZED_HORIZ) != 0) {
      return "MAXIMIZED_HORIZ";
    }
    return "UNKNOWN";
  }

  /**
   * Create the GUI and show it. For thread safety, this method should be
   * invoked from the event-dispatching thread.
   */
  private static void createAndShowGUI() {
    //Make sure we have nice window decorations.
    JFrame.setDefaultLookAndFeelDecorated(true);

    //Create and set up the window.
    frame = new JFrame("WindowEventDemo");
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

    //Create and set up the content pane.
    JComponent newContentPane = new WindowEventDemo();
    newContentPane.setOpaque(true); //content panes must be opaque
    frame.setContentPane(newContentPane);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
  }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        createAndShowGUI();
      }
    });
  }
}
===================================================================




.
Share this article :