对话框包装器有2个类组成:第一个是Popup_dialog,继承与JDialog实现小的如前所示的框架。
作者:中国IT实验室 来源:中国IT实验室 2007年8月26日
关键字:
ÏÂÃæÊÇ´úÂ룺
¡¡¡¡private Point reference_position = new Point(0,0);
¡¡¡¡private MouseMotionListener movement_handler;
¡¡¡¡private MouseListener click_handler;
¡¡¡¡
¡¡¡¡private void init_dragable()
¡¡¡¡{
¡¡¡¡¡¡¡¡movement_handler =
¡¡¡¡¡¡¡¡¡¡¡¡new MouseMotionAdapter()
¡¡¡¡¡¡¡¡¡¡¡¡{¡¡ public void mouseDragged( MouseEvent e )
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡{¡¡ // The reference position is the (window-relative)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// cursor position when the click occurred. The
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// current_mouse_position is mouse position
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// now, and the deltas represent the distance
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// moved.
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Point current_mouse_position¡¡= e.getPoint();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Point current_window_location = getLocation();
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡int delta_x=current_mouse_position.x - reference_position.x;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡int delta_y=current_mouse_position.y - reference_position.y;
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// Move the window over by the computed delta. This move
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// effectively shifts the window-relative, current mouse
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// position back to the original reference position.
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡current_window_location.translate(delta_x, delta_y);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡setLocation(current_window_location);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡};
¡¡¡¡
¡¡¡¡¡¡¡¡click_handler =
¡¡¡¡¡¡¡¡¡¡¡¡new MouseAdapter()
¡¡¡¡¡¡¡¡¡¡¡¡{¡¡ public void mousePressed( MouseEvent e )
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡{¡¡ reference_position = e.getPoint();¡¡// Start of the drag
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡};
¡¡¡¡
¡¡¡¡¡¡¡¡setDragable(true);
¡¡¡¡}
¡¡¡¡
¡¡¡¡/** Turn dragability on or off.
¡¡¡¡*/
¡¡¡¡public void setDragable( boolean on )
¡¡¡¡{¡¡ if( on )
¡¡¡¡¡¡¡¡{¡¡ title.addMouseMotionListener ( movement_handler );
¡¡¡¡¡¡¡¡¡¡¡¡title.addMouseListener¡¡¡¡¡¡ ( click_handler¡¡¡¡);
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡else
¡¡¡¡¡¡¡¡{¡¡ title.removeMouseMotionListener ( movement_handler );
¡¡¡¡¡¡¡¡¡¡¡¡title.removeMouseListener¡¡¡¡¡¡ ( click_handler );
¡¡¡¡¡¡¡¡}
¡¡¡¡}
¡¡¡¡
¡¡¡¡
¡¡¡¡
¡¡¡¡ÈÕÆÚ¶Ô»°¿ò
¡¡¡¡
¡¡¡¡¡¡ ʣϵĶ¼ÊÇЩ΢²»×ãµÀµÄ°ü×°¡£Date_selector_dialog ĞŞÊÎÕß°Ñ°ü×°µÄDate_selector·ÅÔÚµ¯³ö¿òÖĞ¡£Ëü´ÓTitled_date_selectorÖи´ÖÆÁËһЩ´úÂëÓÃÀ´ÏÔʾ¶Ô»°¿ò±êÌâÀ¸£¨µ±Ç°ÈÕÆÚºÍÔ·ݣ©ÕâÀï¸ù±¾¾ÍûÓĞ¿¼Âǵ¼º½ÌõÎÊÌâ¡£ÒòΪDate_selectorÒѾ°üº¬Á˵¼º½ÌõµÈµÈ¡£¡£
¡¡¡¡public class Date_selector_dialog extends Popup_dialog implements Date_selector
¡¡¡¡{
¡¡¡¡¡¡¡¡private Date_selector selector = new Date_selector_panel();
¡¡¡¡
¡¡¡¡¡¡¡¡/** Creates a dialog box with the indicated parent that holds
¡¡¡¡¡¡¡¡ *¡¡a standard {@link Date_selector_panel Date_selector_panel}
¡¡¡¡¡¡¡¡ *¡¡(as created using the no-arg constructor).
¡¡¡¡¡¡¡¡ */
¡¡¡¡¡¡¡¡public Date_selector_dialog( Frame parent )
¡¡¡¡¡¡¡¡{¡¡ super(parent);
¡¡¡¡¡¡¡¡¡¡¡¡selector = new Navigable_date_selector( new Date_selector_panel() );
¡¡¡¡¡¡¡¡¡¡¡¡init();
¡¡¡¡¡¡¡¡}
¡¡¡¡
¡¡¡¡¡¡¡¡/* Like {@link #Date_selector_dialog(Frame),
¡¡¡¡¡¡¡¡ * but for a {@link Dialog} parent.
¡¡¡¡¡¡¡¡ */
¡¡¡¡¡¡¡¡public Date_selector_dialog( Dialog parent )
¡¡¡¡¡¡¡¡{¡¡ super(parent);
¡¡¡¡¡¡¡¡¡¡¡¡selector = new Navigable_date_selector( new Date_selector_panel() );
¡¡¡¡¡¡¡¡¡¡¡¡init();
¡¡¡¡¡¡¡¡}
¡¡¡¡
¡¡¡¡¡¡¡¡/** Creates a dialog box with the indicated parent that holds
¡¡¡¡¡¡¡¡ *¡¡the indicated Date_selector.
¡¡¡¡¡¡¡¡ *¡¡Note that the current month and year display in the
¡¡¡¡¡¡¡¡ *¡¡dialog-box title bar, so there's no need to display them in
¡¡¡¡¡¡¡¡ *¡¡the selector