Sunday, October 30, 2011

contoh program WindowEvent

package pr_pbo2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

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();
}


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.");
}
}

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


ActionListener task = new ActionListener() {
boolean alreadyDisposed = false;
@Override
public void actionPerformed(ActionEvent e) {
if (!alreadyDisposed) {
alreadyDisposed = true;
frame.dispose();
} else {
System.exit(0);
}
}
};
Timer timer = new Timer(500, task);
timer.setInitialDelay(2000);
timer.start();
}

@Override
public void windowClosed(WindowEvent e) {

displayMessage("WindowListener method called: windowClosed.");
}

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

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

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

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

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

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

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

@Override
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";
}

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";
}


private static void createAndShowGUI() {

JFrame.setDefaultLookAndFeelDecorated(true);


frame = new JFrame("WindowEventDemo");
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);


JComponent newContentPane = new WindowEventDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);


frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}

}

No comments:

Post a Comment