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

📄 internalframeeventdemo.java

📁 java tutorial.sun公司官方出品。java入门书籍。最新版
💻 JAVA
字号:
/* * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *   - Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * *   - Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * *   - Neither the name of Sun Microsystems nor the names of its *     contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package events;/* * InternalFrameEventDemo.java requires no other files. */import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class InternalFrameEventDemo                     extends JFrame                     implements InternalFrameListener,                                ActionListener {    JTextArea display;    JDesktopPane desktop;    JInternalFrame displayWindow;    JInternalFrame listenedToWindow;    static final String SHOW = "show";    static final String CLEAR = "clear";    String newline = "\n";    static final int desktopWidth = 500;    static final int desktopHeight = 300;    public InternalFrameEventDemo(String title) {        super(title);        //Set up the GUI.        desktop = new JDesktopPane();        desktop.putClientProperty("JDesktopPane.dragMode",                                  "outline");        //Because we use pack, it's not enough to call setSize.        //We must set the desktop's preferred size.        desktop.setPreferredSize(new Dimension(desktopWidth, desktopHeight));        setContentPane(desktop);        createDisplayWindow();        desktop.add(displayWindow); //DON'T FORGET THIS!!!        Dimension displaySize = displayWindow.getSize();        displayWindow.setSize(desktopWidth, displaySize.height);    }    //Create the window that displays event information.    protected void createDisplayWindow() {        JButton b1 = new JButton("Show internal frame");        b1.setActionCommand(SHOW);        b1.addActionListener(this);        JButton b2 = new JButton("Clear event info");        b2.setActionCommand(CLEAR);        b2.addActionListener(this);        display = new JTextArea(3, 30);        display.setEditable(false);        JScrollPane textScroller = new JScrollPane(display);        //Have to supply a preferred size, or else the scroll        //area will try to stay as large as the text area.        textScroller.setPreferredSize(new Dimension(200, 75));        textScroller.setMinimumSize(new Dimension(10, 10));        displayWindow = new JInternalFrame("Event Watcher",                                           true,  //resizable                                           false, //not closable                                           false, //not maximizable                                           true); //iconifiable        JPanel contentPane = new JPanel();        contentPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));        contentPane.setLayout(new BoxLayout(contentPane,                                            BoxLayout.PAGE_AXIS));        b1.setAlignmentX(CENTER_ALIGNMENT);        contentPane.add(b1);        contentPane.add(Box.createRigidArea(new Dimension(0, 5)));        contentPane.add(textScroller);        contentPane.add(Box.createRigidArea(new Dimension(0, 5)));        b2.setAlignmentX(CENTER_ALIGNMENT);        contentPane.add(b2);        displayWindow.setContentPane(contentPane);        displayWindow.pack();        displayWindow.setVisible(true);    }    public void internalFrameClosing(InternalFrameEvent e) {        displayMessage("Internal frame closing", e);    }    public void internalFrameClosed(InternalFrameEvent e) {        displayMessage("Internal frame closed", e);    }    public void internalFrameOpened(InternalFrameEvent e) {        displayMessage("Internal frame opened", e);    }    public void internalFrameIconified(InternalFrameEvent e) {        displayMessage("Internal frame iconified", e);    }    public void internalFrameDeiconified(InternalFrameEvent e) {        displayMessage("Internal frame deiconified", e);    }    public void internalFrameActivated(InternalFrameEvent e) {        displayMessage("Internal frame activated", e);    }    public void internalFrameDeactivated(InternalFrameEvent e) {        displayMessage("Internal frame deactivated", e);    }    //Add some text to the text area.    void displayMessage(String prefix, InternalFrameEvent e) {        String s = prefix + ": " + e.getSource();        display.append(s + newline);        display.setCaretPosition(display.getDocument().getLength());    }    //Handle events on the two buttons.    public void actionPerformed(ActionEvent e) {        if (SHOW.equals(e.getActionCommand())) {            //They clicked the Show button.            //Create the internal frame if necessary.            if (listenedToWindow == null) {                listenedToWindow = new JInternalFrame("Event Generator",                                                      true,  //resizable                                                      true,  //closable                                                      true,  //maximizable                                                      true); //iconifiable                //We want to reuse the internal frame, so we need to                //make it hide (instead of being disposed of, which is                //the default) when the user closes it.                listenedToWindow.setDefaultCloseOperation(                  WindowConstants.HIDE_ON_CLOSE);                //Add an internal frame listener so we can see                //what internal frame events it generates.                listenedToWindow.addInternalFrameListener(this);                //And we mustn't forget to add it to the desktop pane!                desktop.add(listenedToWindow);                //Set its size and location.  We'd use pack() to set the size                //if the window contained anything.                listenedToWindow.setSize(300, 100);                listenedToWindow.setLocation(                    desktopWidth/2 - listenedToWindow.getWidth()/2,                    desktopHeight - listenedToWindow.getHeight());            }            //Show the internal frame.            listenedToWindow.setVisible(true);        } else { //They clicked the Clear button.            display.setText("");        }    }    /**     * 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.        JFrame frame = new InternalFrameEventDemo(                "InternalFrameEventDemo");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //Display the window.        frame.pack();        frame.setVisible(true);    }    public static void main(String[] args) {        //Schedule a job for the event-dispatching thread:        //creating and showing this application's GUI.        javax.swing.SwingUtilities.invokeLater(new Runnable() {            public void run() {                createAndShowGUI();            }        });    }}

⌨️ 快捷键说明

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