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

📄 aboutframe.java

📁 拥有图形界面的
💻 JAVA
字号:
package org.joone.edit;import java.awt.*;import java.awt.event.*;import java.lang.reflect.*;import java.util.*;import javax.swing.*;import org.joone.log.*;import org.joone.net.NeuralNet;import CH.ifa.draw.util.Iconkit;import CH.ifa.draw.framework.HJDError;/** * This class creates an About box centered on the coordinates provided. * * @author Harry Glasgow */public class AboutFrame extends JDialog{    private static final ILogger log = LoggerFactory.getLogger (AboutFrame.class);    /**     * The array of lines of text to display.     * Do not use '\n' new lines in the text as the auto-sizing will not cope.     */    private static final String [] ABOUT_TEXT = {        "Joone - Java Object Oriented Neural Engine",        "http://www.joone.org",        "pmarrone@users.sourceforge.net"    };    /**     * The array of lines of developers to display.     * Do not use '\n' new lines in the text as the auto-sizing will not cope.     */    private static final String [] HALL_OF_FAME = {        "Joone was developed by Paolo Marrone,",        "with the valuable collaboration of:",        "   Gavin Alford, Mark Allen, Jan Boonen, Yan Cheng Cheok,",        "   Ka-Hing Cheung, Andrea Corti, Huascar Fiorletta, Firestrand,",        "   Pascal Deschenes, Jan Erik Garshol, Harry Glasgow,",        "   Jack Hawkins, Nathan Hindley, Olivier Hussenet,",        "   Boris Jansen, Shen Linlin, Casey Marshall, Julien Norman,",        "   Christian Ribeaud, Anat Rozenzon, Trevis Silvers,",        "   Paul Sinclair, Thomas Lionel Smets, Jerry R.Vos"    };    /**     * The array of lines of external packages to display.     * Do not use '\n' new lines in the text as the auto-sizing will not cope.     */    private static final String [] EXTERNAL_PACK = {        "Joone uses the following external packages:",        "   JHotDraw - http://sourceforge.net/projects/jhotdraw",        "   BeanShell - http://www.beanshell.org",        "   Groovy - http://groovy.codehaus.org",        "   jEdit-Syntax - http://sourceforge.net/projects/jedit-syntax",        "   Log4j -  http://jakarta.apache.org/log4j",        "   HSSF-POI - http://jakarta.apache.org/poi",        "   L2FProd - http://common.l2fprod.com",        "   NachoCalendar - http://nachocalendar.sourceforge.net",        "   XStream - http://xstream.codehaus.org",        "   VisAD - http://www.ssec.wisc.edu/~billh/visad.html",    };    /**     * Constructor     *     * @param x the x-coordinate to center the frame on.     * @param y the y-coordinate to center the frame on.     */    AboutFrame(Frame owner) {        setModal(true);        JRootPane rp = new JRootPane();        setRootPane(rp);        rp.setLayout(new BorderLayout());        Iconkit kit = Iconkit.instance();        if (kit == null)            throw new HJDError("Iconkit instance isn't set");        final Image img = kit.loadImageResource(JoonEdit.DIAGRAM_IMAGES + "jooneShadowSmall.gif");        /*java.net.URL url = getClass().getResource(JoonEdit.DIAGRAM_IMAGES + "jooneShadowSmall.gif");        if (url != null) {            final Image img = Toolkit.getDefaultToolkit().getImage(url.getFile());*/            if (img != null) {                Panel q = new Panel() {public void paint(Graphics g) {g.drawImage(img, 0, 0, this);} public Dimension getPreferredSize() {return new Dimension(84, 87);}};                rp.add(q, BorderLayout.WEST);            }        //}        Button b = new Button("   OK   ");        b.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                dispose();            }        });        Panel p = new Panel();        p.add(b);        rp.add(p, BorderLayout.SOUTH);        TextBlock tb = new TextBlock(ABOUT_TEXT, HALL_OF_FAME, EXTERNAL_PACK);        rp.add(tb, BorderLayout.CENTER);        setTitle("About Joone");        setBackground(Color.white);        setResizable(false);        pack();    }    /**     * Places the AboutFrame in the center of the owner frame.     */    public void place(int x, int y) {        setLocation(x - getWidth()/2, y - getHeight()/2);    }    /**     * Inner class to render the multi line block of text.     */    class TextBlock extends Canvas {        /** Padding around the text area. */        private static final int TEXT_PADDING = 5;        /** The set of text lines to display */        private String [] lines;        /**         * Constructor. Inserts in the Editor and Engine Version line.         *         * @param linesArg the text to display.         * @param hallOfFameArg the list of developers to display.         */        public TextBlock(String [] linesArg, String[] hallOfFameArg, String[] extPack) {            // Get the NeuralNet version by Reflection so that this does not fall over in a            // steaming heap for old NeuralNet versions that don't have the getVersion method.            String neuralNetVersion = "unknown";            Integer neuralNetNumericVersion = null;            try {                Object o = new NeuralNet();                Method m = o.getClass().getMethod("getVersion", new Class[0]);                if (m != null) {                    neuralNetVersion = (String)m.invoke(o, new Object[0]);                }                m = o.getClass().getMethod("getNumericVersion", new Class[0]);                if (m != null) {                    neuralNetNumericVersion = (Integer)m.invoke(o, new Object[0]);                }            } catch (IllegalAccessException iae)            {                log.warn ( "IllegalAccessException getting NeuralNetwork version. Message is " + iae.getMessage(),                           iae );            } catch (InvocationTargetException ite)            {                log.warn ( "InvocationTargetException getting NeuralNetwork version. Message is : " + ite.getMessage(),                           ite );            } catch (NoSuchMethodException nsme)            {                log.warn ( "NoSuchMethodException getting NeuralNetwork version. Do not panic. Message is : " + nsme.getMessage(),                           nsme );            }            // Add the box text.            Collection col = new ArrayList();            for (int i = 0; i < linesArg.length; i++) {                col.add(linesArg[i]);            }            // Add the version lines.            col.add("");            col.add("Editor version: " + JoonEdit.getVersion());            col.add("Engine version: " +            neuralNetVersion);            if (neuralNetNumericVersion == null ||            neuralNetNumericVersion.intValue() < JoonEdit.getNumericRecommendedEngineVersion()) {                col.add("Engine version " +                JoonEdit.getRecommendedEngineVersion() +                " or above recommended");            }            // Add the developers names.            col.add("");            for (int i = 0; i < hallOfFameArg.length; i++) {                col.add(hallOfFameArg[i]);            }            // Add the developers names.            col.add("");            for (int i = 0; i < extPack.length; i++) {                col.add(extPack[i]);            }            // Convert to String array.            lines = new String [col.size()];            Iterator iter = col.iterator();            int i = 0;            while (iter.hasNext()) {                lines[i++] = (String)iter.next();            }        }        /**         * Paint method is overriden to draw the text.         *         * @param g the graphics object to do the painting.         */        public void paint(Graphics g){            FontMetrics fm = getFontMetrics(getFont());            int lineAscent = fm.getAscent();            int lineHeight = fm.getHeight();            for (int i = 0; i < lines.length; i++) {                g.drawString(lines[i], TEXT_PADDING, i * lineHeight + lineAscent + TEXT_PADDING);            }        }        /**         * Method to return the preferred size,         * so that pack will automatically compress the fame.         *         * @return the prefered size of the canvas.         */        public Dimension getPreferredSize() {            FontMetrics fm = getFontMetrics(getFont());            int lineHeight = fm.getHeight();            // Find the length of the longest line.            int width = 0;            for (int i = 0; i < lines.length; i++) {                if (fm.stringWidth(lines[i]) > width) {                    width = fm.stringWidth(lines[i]);                }            }            return new Dimension(            width + 2 * TEXT_PADDING,            lines.length * lineHeight + 2 * TEXT_PADDING);        }    }}

⌨️ 快捷键说明

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