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

📄 basicoptionpaneui.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
	    String s = msg.toString();	    int len = s.length();	    if (len <= 0) {		return;            }	    int nl = -1;	    int nll = 0;	    if ((nl = s.indexOf(newline)) >= 0) {		nll = newline.length();	    } else if ((nl = s.indexOf("\r\n")) >= 0) {	        nll = 2;	    } else if ((nl = s.indexOf('\n')) >= 0) {	        nll = 1;	    }	    if (nl >= 0) {		// break up newlines		if (nl == 0) {                    JPanel breakPanel = new JPanel() {		        public Dimension getPreferredSize() {			    Font       f = getFont();			    			    if (f != null) {				return new Dimension(1, f.getSize() + 2);                            }			    return new Dimension(0, 0);		        }                    };                    breakPanel.setName("OptionPane.break");		    addMessageComponents(container, cons, breakPanel, maxll,                                         true);		} else {		    addMessageComponents(container, cons, s.substring(0, nl),				      maxll, false);                }		addMessageComponents(container, cons, s.substring(nl + nll), maxll,				  false);	    } else if (len > maxll) {		Container c = Box.createVerticalBox();                c.setName("OptionPane.verticalBox");		burstStringInto(c, s, maxll);		addMessageComponents(container, cons, c, maxll, true );	    } else {	        JLabel label;		label = new JLabel( s, JLabel.LEADING );                label.setName("OptionPane.label");                configureMessageLabel(label);		addMessageComponents(container, cons, label, maxll, true);	    }	}    }    /**     * Returns the message to display from the JOptionPane the receiver is     * providing the look and feel for.     */    protected Object getMessage() {	inputComponent = null;	if (optionPane != null) {	    if (optionPane.getWantsInput()) {		/* Create a user component to capture the input. If the		   selectionValues are non null the component and there		   are < 20 values it'll be a combobox, if non null and		   >= 20, it'll be a list, otherwise it'll be a textfield. */		Object             message = optionPane.getMessage();		Object[]           sValues = optionPane.getSelectionValues();		Object             inputValue = optionPane		                           .getInitialSelectionValue();		JComponent         toAdd;		if (sValues != null) {		    if (sValues.length < 20) {			JComboBox            cBox = new JComboBox();                        cBox.setName("OptionPane.comboBox");			for(int counter = 0, maxCounter = sValues.length;			    counter < maxCounter; counter++) {			    cBox.addItem(sValues[counter]);                        }			if (inputValue != null) {			    cBox.setSelectedItem(inputValue);                        }			inputComponent = cBox;			toAdd = cBox;		    } else {			JList                list = new JList(sValues);			JScrollPane          sp = new JScrollPane(list);                        sp.setName("OptionPane.scrollPane");                        list.setName("OptionPane.list");			list.setVisibleRowCount(10);			list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);			if(inputValue != null)			    list.setSelectedValue(inputValue, true);			list.addMouseListener(getHandler());			toAdd = sp;			inputComponent = list;		    }		} else {		    MultiplexingTextField   tf = new MultiplexingTextField(20);                    tf.setName("OptionPane.textField");                    tf.setKeyStrokes(new KeyStroke[] {                                     KeyStroke.getKeyStroke("ENTER") } );		    if (inputValue != null) {                        String inputString = inputValue.toString();			tf.setText(inputString);                        tf.setSelectionStart(0);                        tf.setSelectionEnd(inputString.length());                    }		    tf.addActionListener(getHandler());		    toAdd = inputComponent = tf;		}		Object[]           newMessage;		if (message == null) {		    newMessage = new Object[1];		    newMessage[0] = toAdd;				} else {		    newMessage = new Object[2];		    newMessage[0] = message;		    newMessage[1] = toAdd;		}		return newMessage;	    }	    return optionPane.getMessage();	}	return null;    }    /**     * Creates and adds a JLabel representing the icon returned from     * <code>getIcon</code> to <code>top</code>. This is messaged from     * <code>createMessageArea</code>     */    protected void addIcon(Container top) {	/* Create the icon. */	Icon                  sideIcon = getIcon();	if (sideIcon != null) {	    JLabel            iconLabel = new JLabel(sideIcon);            iconLabel.setName("OptionPane.iconLabel");	    iconLabel.setVerticalAlignment(SwingConstants.TOP);	    top.add(iconLabel, BorderLayout.BEFORE_LINE_BEGINS);	}    }    /**     * Returns the icon from the JOptionPane the receiver is providing     * the look and feel for, or the default icon as returned from     * <code>getDefaultIcon</code>.     */    protected Icon getIcon() {	Icon      mIcon = (optionPane == null ? null : optionPane.getIcon());	if(mIcon == null && optionPane != null)	    mIcon = getIconForType(optionPane.getMessageType());	return mIcon;    }    /**     * Returns the icon to use for the passed in type.     */    protected Icon getIconForType(int messageType) {	if(messageType < 0 || messageType > 3)	    return null;        String propertyName = null;	switch(messageType) {	case 0:	    propertyName = "OptionPane.errorIcon";            break;	case 1:	    propertyName = "OptionPane.informationIcon";            break;	case 2:	    propertyName = "OptionPane.warningIcon";            break;	case 3:	    propertyName = "OptionPane.questionIcon";            break;	}        if (propertyName != null) {            return (Icon)DefaultLookup.get(optionPane, this, propertyName);	}	return null;    }    /**     * Returns the maximum number of characters to place on a line.     */    protected int getMaxCharactersPerLineCount() {	return optionPane.getMaxCharactersPerLineCount();    }   /**     * Recursively creates new JLabel instances to represent <code>d</code>.     * Each JLabel instance is added to <code>c</code>.     */    protected void burstStringInto(Container c, String d, int maxll) {	// Primitive line wrapping	int len = d.length();	if (len <= 0)	    return;	if (len > maxll) {	    int p = d.lastIndexOf(' ', maxll);	    if (p <= 0)		p = d.indexOf(' ', maxll);	    if (p > 0 && p < len) {		burstStringInto(c, d.substring(0, p), maxll);		burstStringInto(c, d.substring(p + 1), maxll);		return;	    }	}	JLabel label = new JLabel(d, JLabel.LEFT);        label.setName("OptionPane.label");        configureMessageLabel(label);	c.add(label);    }    protected Container createSeparator() {        return null;    }    /**     * Creates and returns a Container containing the buttons. The buttons     * are created by calling <code>getButtons</code>.     */    protected Container createButtonArea() {        JPanel bottom = new JPanel();        Border border = (Border)DefaultLookup.get(optionPane, this,                                          "OptionPane.buttonAreaBorder");        bottom.setName("OptionPane.buttonArea");        if (border != null) {            bottom.setBorder(border);        }	bottom.setLayout(new ButtonAreaLayout(           DefaultLookup.getBoolean(optionPane, this,                                    "OptionPane.sameSizeButtons", true),           DefaultLookup.getInt(optionPane, this, "OptionPane.buttonPadding",                                6),           DefaultLookup.getInt(optionPane, this,                        "OptionPane.buttonOrientation", SwingConstants.CENTER),           DefaultLookup.getBoolean(optionPane, this, "OptionPane.isYesLast",                                    false)));	addButtonComponents(bottom, getButtons(), getInitialValueIndex());	return bottom;    }    /**     * Creates the appropriate object to represent each of the objects in     * <code>buttons</code> and adds it to <code>container</code>. This     * differs from addMessageComponents in that it will recurse on     * <code>buttons</code> and that if button is not a Component     * it will create an instance of JButton.     */    protected void addButtonComponents(Container container, Object[] buttons,				 int initialIndex) {	if (buttons != null && buttons.length > 0) {	    boolean            sizeButtonsToSame = getSizeButtonsToSameWidth();	    boolean            createdAll = true;	    int                numButtons = buttons.length;	    JButton[]          createdButtons = null;	    int                maxWidth = 0;	    if (sizeButtonsToSame) {		createdButtons = new JButton[numButtons];            }	    for(int counter = 0; counter < numButtons; counter++) {		Object       button = buttons[counter];		Component    newComponent;		if (button instanceof Component) {		    createdAll = false;		    newComponent = (Component)button;		    container.add(newComponent);		    hasCustomComponents = true;				} else {		    JButton      aButton;                    if (button instanceof ButtonFactory) {                        aButton = ((ButtonFactory)button).createButton();                    }		    else if (button instanceof Icon)			aButton = new JButton((Icon)button);		    else			aButton = new JButton(button.toString());                    aButton.setName("OptionPane.button");		    aButton.setMultiClickThreshhold(DefaultLookup.getInt(                          optionPane, this, "OptionPane.buttonClickThreshhold",                          0));                    configureButton(aButton);		    container.add(aButton);                    ActionListener buttonListener = createButtonActionListener(counter);                    if (buttonListener != null) {                        aButton.addActionListener(buttonListener);                    }		    newComponent = aButton;		}		if (sizeButtonsToSame && createdAll && 		   (newComponent instanceof JButton)) {		    createdButtons[counter] = (JButton)newComponent;		    maxWidth = Math.max(maxWidth,					newComponent.getMinimumSize().width);		}		if (counter == initialIndex) {		    initialFocusComponent = newComponent;                    if (initialFocusComponent instanceof JButton) {                        JButton defaultB = (JButton)initialFocusComponent;                        defaultB.addHierarchyListener(new HierarchyListener() {                            public void hierarchyChanged(HierarchyEvent e) {                                if ((e.getChangeFlags() &                                         HierarchyEvent.PARENT_CHANGED) != 0) {                                    JButton defaultButton = (JButton) e.getComponent();                                    JRootPane root =                                             SwingUtilities.getRootPane(defaultButton);                                    if (root != null) {                                        root.setDefaultButton(defaultButton);                                    }                                }                            }                        });                    }		}	    }	    ((ButtonAreaLayout)container.getLayout()).		              setSyncAllWidths((sizeButtonsToSame && createdAll));	    /* Set the padding, windows seems to use 8 if <= 2 components,	       otherwise 4 is used. It may actually just be the size of the	       buttons is always the same, not sure. */	    if (DefaultLookup.getBoolean(optionPane, this,                   "OptionPane.setButtonMargin", true) && sizeButtonsToSame &&                   createdAll) {		JButton               aButton;		int                   padSize;		padSize = (numButtons <= 2? 8 : 4);		for(int counter = 0; counter < numButtons; counter++) {		    aButton = createdButtons[counter];		    aButton.setMargin(new Insets(2, padSize, 2, padSize));		}	    }	}    }    protected ActionListener createButtonActionListener(int buttonIndex) {        return new ButtonActionListener(buttonIndex);    }

⌨️ 快捷键说明

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