Java swing要点总结(三)

菜单栏

菜单及其事件处理

要开发一个框架窗口的菜单,首现需要利用JMenuBar类创建一个菜单条,然后在菜单条上添加一系列的菜单对象,菜单对象可由JMenu类创建。为使鼠标单击菜单条上的菜单时,可展示出各种功能的菜单项,必须利用JMenuItem类创建各个菜单项,并将菜单项添加到相应的菜单上,上图所示为菜单各组件及其关系。

以下是创建菜单时比较常用的一些方法。

(1)JMenuBar()

此为JMenuBar类最常用的一个构造函数。

(2)void setMenuBar(JMenuBar menubar)

JFrame类提供了此方法来把菜单条放置在JFrame框架窗口中。

(3)JMenu(String s)

此为JMenu最常用的一个可设置菜单文字的构造函数。

(4) JMenu add(JMenu c)

此为JMenuBar类提供的用来设置菜单项分割条的方法。

(5)void addSepartor()

此为JMenu类提供的用来设置菜单项分割条的方法。

(6)JMenuItem(String text)

此为JMenuItem类的一个创建菜单项的构造函数,可设置菜单项的文字。

(7)JMenuItem(String text,Icon icon)

这个JMenuItem类的构造函数可创建一个带文字和图标的菜单项。

(8)JMenuItem add(JMenuItem menuItem)

JMenu类提供了此方法来将菜单项添加到菜单上。

(9)void setAccelerator(KeyStroke keyStroke)

JMenuItem类提供了此方法来设置菜单项的快捷键。参数的KeyStroke类也是位于swing包中。

(10) static KeyStroke getKeyStroke(int keyCode,int modifiers,boolean onKeyRelease)

KeyStroke类提供此静态方法来取得用于设置快捷键的KeyStroke对象,参数keyCode可取值于java.awt.KeyEvent类定义的虚拟键。

下面是用java实现记事本的打开,保存,以及退出的功能代码如下:

package njci.software.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;

public class MyFrame extends JFrame {
	private static final long serialVersionUID = 4232937812480671357L;
	public MyFrame(){
		
		this.setTitle("我的第一个记事本");
		this.setSize(400,300);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setLocationRelativeTo(null);  //居中显示
		
		//为按钮添加一个单机事件
		JButton jbn=new JButton("系统配置");
		//frmMain.add(jbn);
		//jbn.setBounds(10, 10, 100, 20);
		jbn.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				int result=JOptionPane.showConfirmDialog(null, "系统配置","提示",JOptionPane.YES_NO_OPTION);
				if(JOptionPane.YES_OPTION==result){
					//ConfigDialog dlgConfig=new ConfigDialog(this);
					//dlgConfig.setVisible(true);
				}
			}
		});
		createMenu(this);
		this.setVisible(true);
		
	}

	/**添加一个菜单栏
	 * 
	 */
	public void createMenu( final JFrame frame){
		JMenuBar menuBar=new JMenuBar();
		//文件菜单
		JMenu menuFile=new JMenu("文件(F)");
		
		JMenuItem itemNew=new JMenuItem("新建(N)");
		//添加一个快捷键
		itemNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,KeyEvent.CTRL_MASK));
		//给新建按钮添加一个事件
		itemNew.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
		JMenuItem itemOpen=new JMenuItem("打开(O)...");
		//打开事件
		itemOpen.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				JFileChooser chooser = new JFileChooser();
				FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"TXT", "txt");
				chooser.setFileFilter(filter);
				int returnVal = chooser.showOpenDialog(getParent());//getparent
				if(returnVal == JFileChooser.APPROVE_OPTION) {
				System.out.println("You chose to open this file: " +
				chooser.getSelectedFile().getName());
				}
			 
				
			}
		});
		//添加一个快捷键
		itemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,KeyEvent.CTRL_MASK));
		JMenuItem itemSave=new JMenuItem("保存(S)...");
		itemSave.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
		        JFileChooser chooser = new JFileChooser();// 创建文件选择器
		       // int option = chooser.showDialog(getparent, approveButtonText);// 打开文件保存对话框
				
			}
		});
		//添加一个快捷键
		itemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK));
		JMenuItem itemSaveAs=new JMenuItem("另存为(A)...");
		JMenuItem itemConfig=new JMenuItem("系统配置(C)...");
		itemConfig.addActionListener(new ActionListener() { //设置系统配置弹出来的新窗体
			
			@Override
			public void actionPerformed(ActionEvent e) {
					ConfigDialog dlgConfig=new ConfigDialog(frame);
					dlgConfig.setVisible(true);
				
			}
		});
		
		
		JMenuItem itemPrint=new JMenuItem("打印(p)...");
		//添加一个快捷键
		itemPrint.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,KeyEvent.CTRL_MASK));
		JMenuItem itemExit=new JMenuItem("退出(X)");
		//给退出按钮添加一个时间
		itemExit.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				int result=JOptionPane.showConfirmDialog(null, "退出","提示",JOptionPane.YES_NO_OPTION);
				if(JOptionPane.YES_OPTION==result){
				System.exit(0);
				
			}}
		});
		//添加记忆键
		menuFile.setMnemonic('F');
		itemNew.setMnemonic('N');
		//itemOpen.setMnemonic("");
		//添加快捷键
		itemExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.CTRL_MASK));
		menuFile.add(itemNew);
		menuFile.add(itemOpen);
		menuFile.add(itemSave);
		menuFile.add(itemSaveAs);
		menuFile.add(new JSeparator()); //添加一个分隔线
		menuFile.add(itemConfig);
		menuFile.add(itemPrint);
		menuFile.add(new JSeparator());  //添加一个分隔线
		menuFile.add(itemExit);
		menuBar.add(menuFile);
		//编辑键设置
		JMenu menuEdit=new JMenu("编辑(E)");
		JMenuItem itemCancel=new JMenuItem("撤销(U)");
		//添加一个快捷键
		itemCancel.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,KeyEvent.CTRL_MASK));
		JMenuItem itemCut=new JMenuItem("剪切(T)");
		//添加一个快捷键
		itemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.CTRL_MASK));
		JMenuItem itemCopy=new JMenuItem("复制(C)");
		itemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK));
		JMenuItem itemPaste=new JMenuItem("粘贴(P)");
		itemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,KeyEvent.CTRL_MASK));
		JMenuItem itemDelete=new JMenuItem("删除(L)");
		//删除快捷键
		itemDelete.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_DELETE)); //需要强制转换
		JMenuItem itemFind=new JMenuItem("查找(F)...");
		itemFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,KeyEvent.CTRL_MASK));
		JMenuItem itemFindNext=new JMenuItem("查找下一个(N)");
		itemFindNext.setAccelerator(KeyStroke.getKeyStroke("F3"));
		JMenuItem itemReplace=new JMenuItem("替换(R)...");
		itemReplace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,KeyEvent.CTRL_MASK));
		JMenuItem itemGo=new JMenuItem("转到(G)...");
		itemGo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,KeyEvent.CTRL_MASK));
		JMenuItem itemCheckall=new JMenuItem("全选(A)");
		itemCheckall.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,KeyEvent.CTRL_MASK));
		JMenuItem itemDate=new JMenuItem("时间/日期(D)");
		itemDate.setAccelerator(KeyStroke.getKeyStroke("F5"));
		menuEdit.add(itemCancel);
		menuEdit.add(new JSeparator()); //添加一个分隔线
		menuEdit.add(itemCut);
		menuEdit.add(itemCopy);
		menuEdit.add(itemPaste);
		menuEdit.add(itemDelete);
		menuEdit.add(new JSeparator()); //添加一个分隔线
		menuEdit.add(itemFind);
		menuEdit.add(itemFindNext);
		menuEdit.add(itemReplace);
		menuEdit.add(itemGo);
		menuEdit.add(new JSeparator()); //添加一个分隔线
		menuEdit.add(itemCheckall);
		menuEdit.add(itemDate);
		menuBar.add(menuEdit);
		//格式键设置
		JMenu menuFormat=new JMenu("格式(O)");
		JMenuItem itemNewline=new JMenuItem("自动换行(W)");
		JMenuItem itemFont=new JMenuItem("字体(F)...");
		menuFormat.add(itemNewline);
		menuFormat.add(itemFont);
		menuBar.add(menuFormat);
		//查看键设置
		JMenu menuSee=new JMenu("查看(V)");
		JMenuItem itemStatus=new JMenuItem("状态栏(S)");
		menuSee.add(itemStatus);
		menuBar.add(menuSee);
		//帮助键设置
		JMenu menuHelp=new JMenu("帮助(H)"); 
		JMenuItem  itemSeeHelp=new JMenuItem("查看帮助(H)");
		JMenuItem  itemAbout=new JMenuItem("关于记事本(A)");
		menuHelp.add(itemSeeHelp);
		menuHelp.add(itemAbout);
		menuBar.add(menuHelp);
		frame.setJMenuBar(menuBar);
		
	}
	
	
	
public static void main(String[] args){
	new MyFrame();
	
}
}
package njci.software.view;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ConfigDialog extends JDialog {

	/**
	 * 
	 */
	private static final long serialVersionUID = -713398359834685238L;
	public ConfigDialog(final JFrame frame){
		super(frame,"这是一个对话框",true);
		//Container container=getContentPane(); //创建一个容器
		//container.add(new JLabel("这是一个对话框")); //在容器中添加标签
		//添加内部控件
		JPanel pnlConfig=new JPanel();
		pnlConfig.setLayout(null);
		final JLabel lblWidth=new JLabel("宽度");
		final JLabel lblHeight=new JLabel("高度");
		final JTextField txtWidth=new JTextField();
		final JTextField txtHeight=new JTextField();
		JButton btnSave=new JButton("保存");
		btnSave.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				int width=Integer.parseInt(txtWidth.getText());
				int height=Integer.parseInt(txtHeight.getText());
				frame.setSize(width,height);
			}
		});
		JButton btnCancel=new JButton("取消");
		
		//进行布局
		
		lblWidth.setBounds(50,30,60,40);
		txtWidth.setBounds(150,30,160,40);
		lblHeight.setBounds(50,100,60,40);
		txtHeight.setBounds(150,100,160,40);
		btnSave.setBounds(50,160,100,40);
		btnCancel.setBounds(200,160,100,40);
		pnlConfig.add(lblWidth);
		pnlConfig.add(txtWidth);
		pnlConfig.add(lblHeight);
		pnlConfig.add(txtHeight);
		pnlConfig.add(btnSave);
		pnlConfig.add(btnCancel);
		this.add(pnlConfig);
		this.setSize(400,320);
		this.setResizable(false);//窗体大小不可改变
		this.setLocationRelativeTo(frame);;//居中显示
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41338249/article/details/82632530