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

📄 customdialog.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 components;import javax.swing.JOptionPane;import javax.swing.JDialog;import javax.swing.JTextField;import java.beans.*; //property change stuffimport java.awt.*;import java.awt.event.*;/* 1.4 example used by DialogDemo.java. */class CustomDialog extends JDialog                   implements ActionListener,                              PropertyChangeListener {    private String typedText = null;    private JTextField textField;    private DialogDemo dd;    private String magicWord;    private JOptionPane optionPane;    private String btnString1 = "Enter";    private String btnString2 = "Cancel";    /**     * Returns null if the typed string was invalid;     * otherwise, returns the string as the user entered it.     */    public String getValidatedText() {        return typedText;    }    /** Creates the reusable dialog. */    public CustomDialog(Frame aFrame, String aWord, DialogDemo parent) {        super(aFrame, true);        dd = parent;        magicWord = aWord.toUpperCase();        setTitle("Quiz");        textField = new JTextField(10);        //Create an array of the text and components to be displayed.        String msgString1 = "What was Dr. SEUSS's real last name?";        String msgString2 = "(The answer is \"" + magicWord                              + "\".)";        Object[] array = {msgString1, msgString2, textField};        //Create an array specifying the number of dialog buttons        //and their text.        Object[] options = {btnString1, btnString2};        //Create the JOptionPane.        optionPane = new JOptionPane(array,                                    JOptionPane.QUESTION_MESSAGE,                                    JOptionPane.YES_NO_OPTION,                                    null,                                    options,                                    options[0]);        //Make this dialog display it.        setContentPane(optionPane);        //Handle window closing correctly.        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);        addWindowListener(new WindowAdapter() {                public void windowClosing(WindowEvent we) {                /*                 * Instead of directly closing the window,                 * we're going to change the JOptionPane's                 * value property.                 */                    optionPane.setValue(new Integer(                                        JOptionPane.CLOSED_OPTION));            }        });        //Ensure the text field always gets the first focus.        addComponentListener(new ComponentAdapter() {            public void componentShown(ComponentEvent ce) {                textField.requestFocusInWindow();            }        });        //Register an event handler that puts the text into the option pane.        textField.addActionListener(this);        //Register an event handler that reacts to option pane state changes.        optionPane.addPropertyChangeListener(this);    }    /** This method handles events for the text field. */    public void actionPerformed(ActionEvent e) {        optionPane.setValue(btnString1);    }    /** This method reacts to state changes in the option pane. */    public void propertyChange(PropertyChangeEvent e) {        String prop = e.getPropertyName();        if (isVisible()         && (e.getSource() == optionPane)         && (JOptionPane.VALUE_PROPERTY.equals(prop) ||             JOptionPane.INPUT_VALUE_PROPERTY.equals(prop))) {            Object value = optionPane.getValue();            if (value == JOptionPane.UNINITIALIZED_VALUE) {                //ignore reset                return;            }            //Reset the JOptionPane's value.            //If you don't do this, then if the user            //presses the same button next time, no            //property change event will be fired.            optionPane.setValue(                    JOptionPane.UNINITIALIZED_VALUE);            if (btnString1.equals(value)) {                    typedText = textField.getText();                String ucText = typedText.toUpperCase();                if (magicWord.equals(ucText)) {                    //we're done; clear and dismiss the dialog                    clearAndHide();                } else {                    //text was invalid                    textField.selectAll();                    JOptionPane.showMessageDialog(                                    CustomDialog.this,                                    "Sorry, \"" + typedText + "\" "                                    + "isn't a valid response.\n"                                    + "Please enter "                                    + magicWord + ".",                                    "Try again",                                    JOptionPane.ERROR_MESSAGE);                    typedText = null;                    textField.requestFocusInWindow();                }            } else { //user closed dialog or clicked cancel                dd.setLabel("It's OK.  "                         + "We won't force you to type "                         + magicWord + ".");                typedText = null;                clearAndHide();            }        }    }    /** This method clears the dialog and hides it. */    public void clearAndHide() {        textField.setText(null);        setVisible(false);    }}

⌨️ 快捷键说明

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