welcomescreen.java

来自「UCS (Ultra Corba Simulator) is one more 」· Java 代码 · 共 250 行

JAVA
250
字号
package com.corba.mnq.ui;

import com.corba.mnq.main.CorbaMNQ;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Logger;

public class WelcomeScreen extends JFrame implements ActionListener {

    static final long serialVersionUID = 3398575733515385040L;

    private Toolkit toolkits = Toolkit.getDefaultToolkit();

    private Window Windows;

    private Image Images;

    private URL file = null;

    private static WelcomeScreen ins = null;

    private JButton b_new;

    private JButton b_open;

    private JButton b_exit;

    public boolean wait;

    private WelcomeScreen() {
        wait = true;

        JLabel title = new JLabel();
        title.setText("  --  Ultra Corba Simulator");
        title.setForeground(Color.blue);
        title.setHorizontalAlignment(SwingConstants.LEFT);
        String icon = "/images/mnq.jpg";
        Image image = Toolkit.getDefaultToolkit().getImage(ClassLoader.class.getResource(icon));
        title.setIcon(new ImageIcon(image));

        setIconImage(image);
        setTitle("Ultra Corba Simulator");

        JPanel center = new JPanel();
        center.setLayout(new FlowLayout(FlowLayout.CENTER));

        b_new = new JButton("New Project ...");
        b_new.addActionListener(this);
        b_new.setActionCommand("New Project ...");
        b_open = new JButton("Open Project ...");
        b_open.addActionListener(this);
        b_open.setActionCommand("Open Project ...");
        b_exit = new JButton("Exit");
        b_exit.addActionListener(this);
        b_exit.setActionCommand("Exit");

        center.add(b_new);
        center.add(b_open);
        center.add(b_exit);

        getContentPane().setLayout(new BorderLayout());

        getContentPane().add("Center", center);
        getContentPane().add("North", title);

    }

    // Listener for Action
    public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand();

        if (action.equals("New Project ...")) {
            String name = JOptionPane.showInputDialog(this, "Enter New Project Name:");
            if (name == null)
                return;
            File file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator
                    + name);

            if (!file.mkdirs()) {
                JOptionPane.showMessageDialog(this,
                        "Please check whehter the project name is correct!", "New Project ...", 2);
                return;
            }
            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "corba.project");
            try {
                file.createNewFile();
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(this, "Can't create the project file!",
                        "New Project ...", 2);
                return;
            }

            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "etc");
            file.mkdir();
            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "idl");
            file.mkdir();
            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "log");
            file.mkdir();
            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "scripts");
            file.mkdir();
            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "dsi");
            file.mkdir();
            file = new File(CorbaMNQ.ossDir + File.separator + "projects" + File.separator + name
                    + File.separator + "dsi" + File.separator + "src");
            file.mkdir();
            CorbaMNQ.projectDir = CorbaMNQ.ossDir + File.separator + "projects" + File.separator
                    + name;

            CorbaMNQ.initProjectName = name;
        } else if (action.equals("Open Project ...")) {
            File dir = new File(CorbaMNQ.ossDir + File.separator + "projects");
            JFileChooser dlg = new JFileChooser(dir);
            dlg.setDialogTitle("Open Project ...");
            if (dlg.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                File file = dlg.getSelectedFile();
                if (!file.getName().equals("corba.project")) {
                    JOptionPane.showMessageDialog(this,
                            "You haven't selected the correct project file \"corba.project\" !",
                            "Open Project ...", 2);
                    return;
                }
                File pdir = file.getParentFile();
                String name = pdir.getName();
                CorbaMNQ.projectDir = CorbaMNQ.ossDir + File.separator + "projects"
                        + File.separator + name;
                CorbaMNQ.initProjectName = name;
            } else {
                return;
            }

        } else if (action.equals("Exit")) {
            System.exit(0);
        } else {
            return;
        }

        wait = false;

    }

    public static WelcomeScreen instance() {
        if (ins == null)
            ins = new WelcomeScreen();
        return ins;
    }

    public void setFile(URL file) {
        this.file = file;
    }

    public void dispaly() {
        try {
            if (File.separator.equalsIgnoreCase("\\")) {
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            } else {
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
            }
        } catch (Exception e) {
            LOG.severe("Couldn't use system look and feel.");
        }

        // Make sure we have nice uix decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        // remove decorated parts of component
        setUndecorated(true);

        // Display the window.
        pack();
        // // The next two lines should be in one line.
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

        int w = getSize().width;
        int h = getSize().height;
        int x = (dim.width - w) / 2;
        int y = (dim.height - h) / 2;
        setBounds(x, y, w, h);

        setVisible(true);
    }

    public void exit() {
        dispose();
    }

    /** used for java.util.logging */
    private static final Logger LOG = Logger.getLogger(WelcomeScreen.class.getName());
}

class ImageCanvas extends Canvas {

    private Image Images;

    public ImageCanvas(Image Images) {
        MediaTracker mt = new MediaTracker(this);
        mt.addImage(Images, 0);

        try {
            mt.waitForID(0);
        } catch (Exception e) {
            e.printStackTrace();
        }

        this.Images = Images;
    }

    public void paint(Graphics g) {
        g.drawImage(Images, 0, 0, this);
    }

    public void update(Graphics g) {
        paint(g);
    }

    public Dimension getPreferredSize() {
        return new Dimension(Images.getWidth(this), Images.getHeight(this));
    }
}

⌨️ 快捷键说明

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