⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmframe.java

📁 java 开发的sip软电话 源码 jain sip
💻 JAVA
字号:
package net.java.mais.media.jmf;

/**
 * <p>Title: SIP Communicator</p>
 *
 * <p>Description: A SIP UA</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: Network Research Team, Louis Pasteur University</p>
 *
 * @author Emil Ivov
 * @version 1.0
 */
/*
 * @(#)JMFrame.java	1.7 02/08/21
 *
 * Copyright (c) 1996-2002 Sun Microsystems, Inc.  All rights reserved.
 */


import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Vector;

import javax.swing.JFrame;


public class JMFrame extends JFrame implements WindowListener {

    protected Frame         frameOwner = null;
    private boolean         boolFirstTimeVisible = true;
    private Vector          vectorChildFrames = new Vector ();


    public JMFrame () {
        this ( null, "JMFrame" );
    }

    public JMFrame ( String strTitle ) {
        this ( null, strTitle );
    }

    public JMFrame ( Frame frameOwner ) {
        this ( frameOwner, "JMFrame" );
    }

    public JMFrame ( Frame frameOwner, String strTitle ) {
        super ( strTitle );
        this.frameOwner = frameOwner;
        initFrame ();
    }


    protected void initFrame () {
        this.addWindowListener ( this );
    }

    public void addNotify () {
        super.addNotify ();
        autoPosition ();
    }

    public void setVisible ( boolean boolVisible ) {
        if ( boolVisible == true  &&  !this.isVisible()  &&  boolFirstTimeVisible == true ) {
            boolFirstTimeVisible = false;
            autoPosition ();
            if ( frameOwner != null  &&  frameOwner instanceof JMFrame ) {
                ((JMFrame)frameOwner).vectorChildFrames.addElement ( this );
            }
        }
        super.setVisible ( boolVisible );
    }

    public void autoPosition () {
        autoPosition ( this, frameOwner );
    }

    public static void autoPosition ( Frame frame, Frame frameOwner ) {
        Dimension       dim;
        Dimension       dimOwner;
        Dimension       dimFrame;
        Dimension       dimScreen;
        Point           point;
        Insets          insets;
        Frame           framePrevSibling = null;

        if ( frame == null  ||  frameOwner == null  ||  !frameOwner.isShowing() )
            return;

        if ( frameOwner instanceof JMFrame  &&  ((JMFrame)frameOwner).vectorChildFrames.size() > 0 ) {
            framePrevSibling = (Frame) ((JMFrame)frameOwner).vectorChildFrames.lastElement();
        }

        if ( framePrevSibling != null  &&  framePrevSibling.isShowing() ) {
            point = framePrevSibling.getLocationOnScreen();
            point.x += 20;
            point.y += 20;
        }
        else {
            point = frameOwner.getLocationOnScreen ();
            dimOwner = frameOwner.getSize ();
            point.y += dimOwner.height;
        }

        dim = frame.getPreferredSize ();
        dimFrame = frame.getSize ();
        dimFrame.width = Math.max ( dim.width, dimFrame.width );
        dimFrame.height = Math.max ( dim.height, dimFrame.height );
        dimScreen = Toolkit.getDefaultToolkit().getScreenSize();

        if ( point.x + dimFrame.width > dimScreen.width )
            point.x = dimScreen.width - dimFrame.width;
        if ( point.y + dimFrame.height > dimScreen.height )
            point.y = dimScreen.height - dimFrame.height;
        frame.setLocation ( point );
    }

    public void windowOpened ( WindowEvent event ) {
    }

    public void windowClosing ( WindowEvent event ) {
        this.dispose ();
    }

    public void windowClosed ( WindowEvent event ) {
        if ( frameOwner != null  &&  frameOwner instanceof JMFrame
                    &&  ((JMFrame)frameOwner).vectorChildFrames.contains(this) ) {
            ((JMFrame)frameOwner).vectorChildFrames.removeElement ( this );
        }
    }

    public void windowIconified ( WindowEvent event ) {
    }

    public void windowDeiconified ( WindowEvent event ) {
    }

    public void windowActivated ( WindowEvent event ) {
    }

    public void windowDeactivated ( WindowEvent event ) {
    }

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -