JFrame和JInternalFrame示例學習(轉)
阿新 • • 發佈:2017-12-26
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個像素。 intinset = 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示例學習(轉)