mainframe.java

来自「导出ORACLE数据库对象DDL语句的程序」· Java 代码 · 共 663 行 · 第 1/2 页

JAVA
663
字号
package com.icbcsdc.ddlexp.ui;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.border.Border;

import pv.jfcx.JPVButton;
import pv.jfcx.PVNode;

import com.icbcsdc.ddlexp.pub.staticLog.Logger;
import com.icbcsdc.ddlexp.pub.util.ConfigFile;
import com.icbcsdc.ddlexp.pub.util.FileDb;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLDatabase;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLManager;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode;
import com.icbcsdc.ddlexp.ui.dialog.MainFrameAboutBox;
import com.icbcsdc.ddlexp.ui.rightPanel.RightPanel;


/**
 * 
 * 主窗口类
 *  
 */
public class MainFrame extends TreeFrame implements ActionListener {

    public MyTree selectedTreeView=null;

	/**
	 * 本Frame的Panel
	 */
	private JPanel contentPane;

	/**
	 * 窗体的菜单栏
	 */
	private JMenuBar myMenuBar = new JMenuBar();

	/**
	 * File菜单
	 */
	private JMenu jMenuFile = new JMenu();

	/**
	 * 退出菜单项
	 */
	private JMenuItem jMenuFileExit = new JMenuItem();

	/**
	 * 帮助菜单
	 */
	private JMenu jMenuHelp = new JMenu();

	/**
	 * 弹出about对话框的菜单项
	 */
	private JMenuItem jMenuHelpAbout = new JMenuItem();


	/**
	 * 窗体的工具栏
	 */
	private JToolBar jToolBar = new JToolBar();

	
	/**
	 * 窗体的工具栏按钮
	 */
	private JButton btnRefresh = new JButton();

	/**
	 * 窗体的工具栏按钮
	 */
	private JButton btnHelp = new JButton();

	/**
	 * 用户管理按钮图标
	 */
//	private ImageIcon usermanagerImage=null;

	/**
	 * 图标
	 */
	private ImageIcon refreshImage=null;

	/**
	 * 图标
	 */
	private ImageIcon helpImage=null;

	/**
	 * 窗体边框
	 */
	private Border mainFrmBorder=null;

    private File expFile = null;


	/**
	 * 窗体的状态栏
	 */
	private JToolBar statusBar = new JToolBar();
	private JLabel blankHeader =new JLabel("   ");
	private JLabel statusHeader=new JLabel(" ");
	private JLabel statusInfo  =new JLabel("              ");

	private BorderLayout mainFrmBorderLayout = new BorderLayout();

	private JSplitPane splitPane = new JSplitPane();

	private FlowLayout flwLayout = new FlowLayout();

	private JEditorPane editPane = new JEditorPane();
	
	private JPVButton jpvbutton=null;
	
	private javax.swing.Timer m_run;

	/**
	 * 窗体左边树的容器
	 */
	protected MyTree treeView;

	/**
	 * 窗体右边的容器
	 */
	protected JScrollPane jsp = new JScrollPane();

	//XMLManager manager=null;
	
	/**
	 * Construct the frame
	 */
	public MainFrame() {

		try {
			//manager= new XMLManager();
			jbInit();
			enableEvents(AWTEvent.WINDOW_EVENT_MASK);
		} catch (Exception e) {
			Logger.log(Logger.ERROR,e.getMessage());
			//e.printStackTrace();
		}
	}

	static private MainFrame instance=null; // 唯一实例

	/**
	* 返回唯一实例.如果是第一次调用此方法,则创建实例
	* @return JDBCPoolManager 唯一实例
	*/
	static synchronized public MainFrame getInstance() {
		if (instance == null) {
			instance = new MainFrame();
		}
		return instance;
	}
	

	/**
	 * @throws Exception
	 *             窗体初始化
	 */
	private void jbInit() throws Exception {
		/**设置图标*/
		refreshImage = new ImageIcon("img/refresh18.gif");
		helpImage = new ImageIcon("img/help.gif");
		setIconImage(new ImageIcon("img/console1.gif").getImage());

		/**设置边框和布局*/
		mainFrmBorder = BorderFactory.createEtchedBorder(SystemColor.desktop, SystemColor.activeCaptionBorder);
		contentPane = (JPanel) this.getContentPane();
		contentPane.setLayout(mainFrmBorderLayout);

		/**树的生成*/
		this.constructTree();

		jpvbutton = new pv.jfcx.JPVButton("") {
			pv.shape.Cube m_cube = new pv.shape.Cube(45, 20, null);
			protected Rectangle drawTextAndImage(Graphics g, int x, int y,
					int w, int h) {
				Rectangle r = super.drawTextAndImage(g, x, y, w, h);
				//-----------------
				// rotate cube on every paint
				m_cube.x = x + 1;
				m_cube.y = y + 1;
				m_cube.lines = Color.gray;
				double speed = 1;
				if (isFlat())
					speed /= 4.0;
				else if (getPressed())
					speed = -speed;
				m_cube.angleX += speed * 6.0;
				m_cube.angleY += speed;
				m_cube.angleZ += speed;
				m_cube.paint(g);
				return r;
			}
		};
		jpvbutton.setOpaque(true);
		jpvbutton.setCanKeepPressed(false);
		jpvbutton.setCanGetFocus(false);
		jpvbutton.setFocusRect((6 & 1) == 0);
		jpvbutton.setTextPressed("");
		jpvbutton.setText3D(-1, -1);
		jpvbutton.setThreeButtonStates(true);
		myMenuBar.add(jpvbutton);
		jpvbutton.setBounds(0, 0, 25, 25);

		/**设置菜单*/
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		this.setSize(new Dimension(screenSize.width, screenSize.height));
		this.setTitle("DDLExp");
		jMenuFile.setText("File");
		jMenuFileExit.setText("Exit");
		jMenuHelp.setText("Help");
		jMenuHelpAbout.setText("About");
		
		jMenuFile.add(jMenuFileExit);
		jMenuHelp.add(jMenuHelpAbout);

		myMenuBar.setLayout(new GridLayout(1, 20));
		myMenuBar.add(jMenuFile);
		myMenuBar.add(jMenuHelp);

		JPanel j1 = new JPanel();
		myMenuBar.add(j1);
		JPanel j2 = new JPanel();
		myMenuBar.add(j2);
		JPanel j3 = new JPanel();
		myMenuBar.add(j3);
		JPanel j4 = new JPanel();
		myMenuBar.add(j4);
		JPanel j5 = new JPanel();
		myMenuBar.add(j5);
		JPanel j6 = new JPanel();
		myMenuBar.add(j6);
		JPanel j7 = new JPanel();
		myMenuBar.add(j7);
		JPanel j8 = new JPanel();
		myMenuBar.add(j8);
		JPanel j9 = new JPanel();
		myMenuBar.add(j9);
		JPanel j10 = new JPanel();
		myMenuBar.add(j10);
		JPanel j11 = new JPanel();
		myMenuBar.add(j11);
		JPanel j12 = new JPanel();
		myMenuBar.add(j12);
		JPanel j13 = new JPanel();
		myMenuBar.add(j13);
		JPanel j14 = new JPanel();
		myMenuBar.add(j14);
		JPanel j15 = new JPanel();

		this.setJMenuBar(myMenuBar);

		/**设置按钮*/
		btnRefresh.setIcon(refreshImage);
		btnRefresh.setToolTipText("Refresh");
		btnHelp.setIcon(helpImage);
		btnHelp.setToolTipText("Help");
		
		/**将各种对象添加到主窗口中*/
		/**添加按钮栏*/
		jToolBar.setOrientation(JToolBar.VERTICAL);
		jToolBar.add(btnRefresh);
		jToolBar.add(btnHelp);
		jToolBar.setBackground(Color.lightGray);
		contentPane.add(jToolBar, BorderLayout.WEST);
		
		/**设置状态栏*/
		statusBar.setOrientation(JToolBar.HORIZONTAL);
		statusBar.setPreferredSize(new Dimension(40,25));
		statusBar.add(blankHeader);
		statusBar.add(statusHeader);
		statusBar.add(statusInfo);
		contentPane.add(statusBar, BorderLayout.SOUTH);
		
		/**设置主显示栏*/
		contentPane.add(splitPane, BorderLayout.CENTER);
		contentPane.setBackground(Color.lightGray);
		contentPane.setBorder(mainFrmBorder);

		//设置左面树面板的边框
		splitPane.setBackground(Color.lightGray);
		splitPane.setDividerSize(5);

		//分裂框中间条的位置
		splitPane.setDividerLocation(GlobalParameters.TREE_WIDTH);

		//添加左面树面板
		splitPane.add(treeView, JSplitPane.LEFT);
		
		//添加右边内容显示面板
		jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		jsp.setViewportBorder(BorderFactory.createEtchedBorder());
		splitPane.add(jsp, JSplitPane.RIGHT);
//		jsp.getViewport().set

		//添加其它监听事件
		addListner();
	}

⌨️ 快捷键说明

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