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

📄 fontselector.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. */ import java.awt.*;import java.awt.font.*;import java.awt.geom.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;/* * This applet displays a String with the user's selected  * fontname, style and size attributes.*/public class FontSelector extends JApplet    implements ChangeListener, ItemListener {    TextTestPanel textTestPanel;    JComboBox fonts, styles;    JSpinner sizes;    String fontChoice = "Dialog";    int styleChoice = 0;    int sizeChoice = 12;    public void init() {        try {            String cn = UIManager.getSystemLookAndFeelClassName();            UIManager.setLookAndFeel(cn);        } catch (Exception cnf) {        }        JPanel fontSelectorPanel = new JPanel();        fontSelectorPanel.add(new JLabel("Font family:"));        GraphicsEnvironment gEnv =            GraphicsEnvironment.getLocalGraphicsEnvironment();        fonts = new JComboBox(gEnv.getAvailableFontFamilyNames());        fonts.setSelectedItem(fontChoice);        fonts.setMaximumRowCount(5);        fonts.addItemListener(this);        fontSelectorPanel.add(fonts);        fontSelectorPanel.add(new JLabel("Style:"));        String[] styleNames = {"Plain", "Bold", "Italic", "Bold Italic"};        styles = new JComboBox(styleNames);        styles.addItemListener(this);        fontSelectorPanel.add(styles);        fontSelectorPanel.add(new JLabel("Size:"));        sizes = new JSpinner(new SpinnerNumberModel(12, 6, 24, 1));        sizes.addChangeListener(this);        fontSelectorPanel.add(sizes);        textTestPanel = new TextTestPanel();        textTestPanel.setFont(new Font(fontChoice, styleChoice, sizeChoice));        textTestPanel.setBackground(Color.white);        add(BorderLayout.NORTH, fontSelectorPanel);        add(BorderLayout.CENTER, textTestPanel);    }    /*     * Detect a state change in any of the settings and create a new     * Font with the corresponding settings. Set it on the test component.     */    public void itemStateChanged(ItemEvent e) {        if (e.getStateChange() != ItemEvent.SELECTED) {            return;        }        if (e.getSource() == fonts) {            fontChoice = (String)fonts.getSelectedItem();        } else {            styleChoice = styles.getSelectedIndex();        }        textTestPanel.setFont(new Font(fontChoice, styleChoice, sizeChoice));    }    public void stateChanged(ChangeEvent e) {        try {            String size = sizes.getModel().getValue().toString();            sizeChoice = Integer.parseInt(size);            textTestPanel.setFont(new Font(fontChoice,styleChoice,sizeChoice));        } catch (NumberFormatException nfe) {        }    }    public static void main(String s[]) {        JFrame f = new JFrame("FontSelector");        f.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });        JApplet fontSelector = new FontSelector();        f.add(fontSelector, BorderLayout.CENTER);        fontSelector.init();        f.pack();        f.setVisible(true);    }}class TextTestPanel extends JComponent {    public Dimension getPreferredSize() {        return new Dimension(500,200);    }    public void setFont(Font font) {        super.setFont(font);        repaint();    }    public void paintComponent(Graphics g) {        super.paintComponent(g);        g.setColor(Color.white);        g.fillRect(0, 0, getWidth(), getHeight());        g.setColor(Color.black);        g.setFont(getFont());        FontMetrics metrics = g.getFontMetrics();        String text = "The quick brown fox jumped over the lazy dog";        int x = getWidth()/2 - metrics.stringWidth(text)/2;        int y = getHeight() - 80;        g.drawString(text, x, y);    }}

⌨️ 快捷键说明

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