首頁 > 軟體

Swing 下拉式選單怎麼用

2019-12-10 01:06:08

選單在日常的軟體使用中是很常見的一種元件,Java Swing中的選單由  JMenu 類實現,可以包含多個選單項和帶分隔符的選單。在選單中,選單項由 JMenuItem 類表示,分隔符由 JSeparator 類表示。具體怎麼使用呢?接下來小編就整理分享給大家,Swing選單的用法。


1

構造方法1:建立一個無文字的 JMenu 物件JMenu menu=new JMenu();構造方法2:建立一個帶有指定文字的 JMenu 物件JMenu menu=new JMenu("檔案");

1

常用方法如下圖:


1

建立檔案選單,檔案選單下包含:新建、開啟、儲存和退出這4個選單項


2

建立編輯選單,編輯選單下包含:復原、剪貼、複製和自動換行這4個選單項


3

把選單加入到視窗中:

frame.setJMenuBar(JMenuBar jMenuBar);




4

Demo25_JMenuBar?類的程式碼如下:public class Demo25_JMenuBar extends JMenuBar{public static void main(String[] args) {JFrame frame=new JFrame("選單欄");? ? ? ? frame.setSize(300,200);? ? ? ? frame.setJMenuBar(new Demo25_JMenuBar());? ? ? ? SwingUtils.setCenter(frame);//設定表單大小600*800並居中? ? ? ? frame.setVisible(true);}
public Demo25_JMenuBar() {add(createFileMenu());? ? //新增「檔案」選單? ? ? ? add(createEditMenu());? ? //新增「編輯」選單? ? ? ? setVisible(true);}//定義「檔案」選單? ? private JMenu createFileMenu(){? ? ? ? JMenu menu=new JMenu("檔案(F)");? ? ? ? menu.setMnemonic(KeyEvent.VK_F);? ? //設定快速存取符? ? ? ? JMenuItem item=new JMenuItem("新建(N)",KeyEvent.VK_N);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? item=new JMenuItem("開啟(O)",KeyEvent.VK_O);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? item=new JMenuItem("儲存(S)",KeyEvent.VK_S);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? menu.addSeparator();? ? ? ? item=new JMenuItem("退出(E)",KeyEvent.VK_E);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? return menu;? ? }? ? //定義「編輯」選單? ? private JMenu createEditMenu(){? ? ? ? JMenu menu=new JMenu("編輯(E)");? ? ? ? menu.setMnemonic(KeyEvent.VK_E);? ? ? ? JMenuItem item=new JMenuItem("復原(U)",KeyEvent.VK_U);? ? ? ? item.setEnabled(false);? ? ? ? menu.add(item);? ? ? ? menu.addSeparator();? ? ? ? item=new JMenuItem("剪貼(T)",KeyEvent.VK_T);? ? ? ? menu.add(item);? ? ? ? item=new JMenuItem("複製(C)",KeyEvent.VK_C);? ? ? ? menu.add(item);? ? ? ? menu.addSeparator();? ? ? ? JCheckBoxMenuItem cbMenuItem=new JCheckBoxMenuItem("自動換行");? ? ? ? menu.add(cbMenuItem);? ? ? ? return menu;? ? }}
輯」選單? ? ? ? setVisible(true);}//定義「檔案」選單? ? private JMenu createFileMenu(){? ? ? ? JMenu menu=new JMenu("檔案(F)");? ? ? ? menu.setMnemonic(KeyEvent.VK_F);? ? //設定快速存取符? ? ? ? JMenuItem item=new JMenuItem("新建(N)",KeyEvent.VK_N);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? item=new JMenuItem("開啟(O)",KeyEvent.VK_O);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? item=new JMenuItem("儲存(S)",KeyEvent.VK_S);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? menu.addSeparator();? ? ? ? item=new JMenuItem("退出(E)",KeyEvent.VK_E);? ? ? ? item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK));? ? ? ? menu.add(item);? ? ? ? return menu;? ? }? ? //定義「編輯」選單? ? private JMenu createEditMenu(){? ? ? ? JMenu menu=new JMenu("編輯(E)");? ? ? ? menu.setMnemonic(KeyEvent.VK_E);? ? ? ? JMenuItem item=new JMenuItem("復原(U)",KeyEvent.VK_U);? ? ? ? item.setEnabled(false);? ? ? ? menu.add(item);? ? ? ? menu.addSeparator();? ? ? ? item=new JMenuItem("剪貼(T)",KeyEvent.VK_T);? ? ? ? menu.add(item);? ? ? ? item=new JMenuItem("複製(C)",KeyEvent.VK_C);? ? ? ? menu.add(item);? ? ? ? menu.addSeparator();? ? ? ? JCheckBoxMenuItem cbMenuItem=new JCheckBoxMenuItem("自動換行");? ? ? ? menu.add(cbMenuItem);? ? ? ? return menu;? ? }}

5

SwingUtils?類的程式碼如下:public class SwingUtils {public static void setCenter(JFrame jf) {int screenWidth=Toolkit.getDefaultToolkit().getScreenSize().width;int screenHeight=Toolkit.getDefaultToolkit().getScreenSize().height;?int jframeWidth = 800;int jframeHeight = 600;jf.setBounds((screenWidth/2)-(jframeW
idth/2), (screenHeight/2)-(jframeHeight/2),?? ? ? ? jframeWidth, jframeHeight);}}

IT145.com E-mail:sddin#qq.com