1. 程式人生 > >JFrame和JInternalFrame示例學習(轉)

JFrame和JInternalFrame示例學習(轉)

splay wid and eat oca nds etc idt bar

1. 創建主窗體並簡單建立菜單項,示例代碼如下:

package internalFrame;

import javax.swing.JInternalFrame;
import javax.swing.JDesktopPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import javax.swing.KeyStroke;
 
import java.awt.event.*;
import java.awt.*;
 
/* * InternalFrameDemo.java requires: * MyInternalFrame.java */ public class InternalFrameDemo extends JFrame implements ActionListener { JDesktopPane desktop; public InternalFrameDemo() { super("InternalFrameDemo"); //讓大窗口在屏幕的每一個邊緣縮進50個像素。 int
inset = 50; Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setBounds(inset, inset, screenSize.width - inset*2, screenSize.height - inset*2); //建立GUI。 desktop = new JDesktopPane(); //定義一個桌面面板 createFrame(); //調用自定義方法,
創建第一個窗體 setContentPane(desktop); setJMenuBar(createMenuBar());  //創建菜單欄 //拖放模式 desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); } protected JMenuBar createMenuBar() { JMenuBar menuBar = new JMenuBar(); //定義並實例化菜單欄項目 JMenu menu = new JMenu("Document"); menu.setMnemonic(KeyEvent.VK_D); //定義熱鍵  menuBar.add(menu); //創建第一個子菜單項 JMenuItem menuItem = new JMenuItem("New"); menuItem.setMnemonic(KeyEvent.VK_N); menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_N, ActionEvent.ALT_MASK)); menuItem.setActionCommand("new"); menuItem.addActionListener(this); menu.add(menuItem); //創建第二個子菜單項 menuItem = new JMenuItem("Quit"); menuItem.setMnemonic(KeyEvent.VK_Q); menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_Q, ActionEvent.ALT_MASK)); menuItem.setActionCommand("quit"); menuItem.addActionListener(this); menu.add(menuItem); return menuBar; } //對菜單的選擇操作 public void actionPerformed(ActionEvent e) { if ("new".equals(e.getActionCommand())) { //新增 createFrame(); } else { //退出 quit(); } } //創建一個新的內置窗體 protected void createFrame() { MyInternalFrame frame = new MyInternalFrame(); frame.setVisible(true); desktop.add(frame); try { frame.setSelected(true); } catch (java.beans.PropertyVetoException e) {} } //退出應用 protected void quit() { System.exit(0); } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window. InternalFrameDemo frame = new InternalFrameDemo(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Display the window. frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application‘s GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }

2. 定義類置窗體類MyInternalFrame,繼承父類JInternalFrame。示例代碼如下:

package internalFrame;

import javax.swing.JInternalFrame;

import java.awt.event.*;
import java.awt.*;
 
/* Used by InternalFrameDemo.java. */
public class MyInternalFrame extends JInternalFrame {
    static int openFrameCount = 0;
    static final int xOffset = 30, yOffset = 30;
 
    public MyInternalFrame() {
        super("Document #" + (++openFrameCount), 
              true, //resizable
              true, //closable
              true, //maximizable
              true);//iconifiable
 
        //...Create the GUI and put it in the window...
 
        //...Then set the window size or call pack...
        setSize(300,300);
 
        //Set the window‘s location.
        setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
    }
}

JFrame和JInternalFrame示例學習(轉)