Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / GUI / May 2005

Tip: Looking for answers? Try searching our database.

Detecting resizing of JFrame

Thread view: 
- - 22 May 2005 04:10 GMT
How does one detect that a JFrame is being resized? componentResized()
of ComponentListener is only called when the mouse is released.
Tjerk Wolterink - 22 May 2005 22:41 GMT
> How does one detect that a JFrame is being resized? componentResized()
> of ComponentListener is only called when the mouse is released.

i think this is not supported by swing.
Maybe you could try to add a mouselistener to a jframe.

But why do you want to detect this?
Maybe there is another solution
BartCr - 23 May 2005 07:46 GMT
There is no mechanism in Swing supporting this, because the window
resizing is handled by the underlying windowing system. It's of course
possible to go to JNI and implement something, but here's a 100% java
way to detect this. Note that this is a very rough implementation, for
sure not production quality code.

import javax.swing.*;

public class WindowResizing implements WindowResizeListener {
   public static void main(String[] args) {
       JFrame f = new JFrame();
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       f.setSize(100, 100);

       WindowResizeListener l = new WindowResizing();
       WindowResizeMonitor.register(f, l);

       f.setVisible(true);
   }

   public void windowResized(WindowResizeEvent e) {
       System.out.println(e);
   }
}

------------------------------------------------------------------------------------

import java.util.*;
import java.awt.Window;
import java.awt.Dimension;

public class WindowResizeMonitor implements Runnable {
   private static final HashMap WINDOW_MAP = new HashMap();

   private List listeners = new ArrayList();
   private boolean run = false;
   private Window window;

   private WindowResizeMonitor(Window window) {
       this.window = window;
   }

   public static void register(Window window, WindowResizeListener
listener) {
       WindowResizeMonitor monitor = (WindowResizeMonitor)
WINDOW_MAP.get(window);

       if (monitor == null) {
           monitor = new WindowResizeMonitor(window);
           WINDOW_MAP.put(window, monitor);
       }
       monitor.add(listener);
   }

   public static void unregister(Window window, WindowResizeListener
listener) {
       WindowResizeMonitor monitor = (WindowResizeMonitor)
WINDOW_MAP.get(window);

       if (monitor != null) {
           monitor.remove(listener);
       }
   }

   private synchronized void add(WindowResizeListener listener) {
       listeners.add(listener);

       if (!run) {
           run = true;
           new Thread(this).start();
       }
   }

   private synchronized void remove(WindowResizeListener listener) {
       listeners.remove(listener);

       if (run && listeners.isEmpty()) {
           run = false;
       }
   }

   public void run() {
       Dimension oldSize = window.getSize();

       try {
           while (run) {
               Thread.sleep(100);

               Dimension curSize = window.getSize();
               if (!oldSize.equals(curSize)) {
                   fireWindowResizeEvent(new WindowResizeEvent(window,
oldSize, curSize));

                   oldSize = curSize;
               }
           }
       } catch (InterruptedException e) {
       }
   }

   private void fireWindowResizeEvent(WindowResizeEvent event) {
       Iterator it = listeners.iterator();

       while (it.hasNext()) {
           WindowResizeListener l = (WindowResizeListener) it.next();
           l.windowResized(event);
       }
   }
}

------------------------------------------------------------------------------------

import java.util.EventListener;

public interface WindowResizeListener extends EventListener {
   void windowResized(WindowResizeEvent e);
}

------------------------------------------------------------------------------------

import java.util.EventObject;

public class WindowResizeEvent extends EventObject {
   private Dimension oldSize;
   private Dimension newSize;

   public WindowResizeEvent(Object source, Dimension oldSize,
Dimension newSize) {
       super(source);
       this.oldSize = oldSize;
       this.newSize = newSize;
   }

   public void getOldSize() {
       return oldSize;
   }

   public void getNewSize() {
       return newSize;
   }
}


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.