⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guidemo13.java

📁 java程序设计语言源代码
💻 JAVA
字号:
//Example 13 of Chapter 5

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUIDemo13 extends JFrame
{
	//普通菜单的成员
	JMenuBar bar;
	private JMenu mainMenu[];             //主菜单
	private JMenuItem item1[], item2[];   //前两个菜单的菜单项
	private JMenu menu3, menu4[], menu5;  //第三、四、五个菜单的菜单项
	
	private String mainMenuName[] = {	"文件(F)", "编辑(E)", "标签设定(L)", "字体设定(O)", "颜色设定(C)"};
	private String item1Name[] = { "新建(N)", "打开(O)", "关闭(C)", "保存(S)", "另存为(A)", "退出(X)"};
	private String item2Name[] = { "剪切(T)", "复制(C)", "粘贴(P)", "删除(L)", "查找(F)", "替换(R)", "全选(A)"};
	private String menu4Name[] = { "Name", "Style", "Size",};
	
	private JRadioButtonMenuItem text[], name[], size[], color[];  //四个单选按钮数组
	private JCheckBoxMenuItem style[];                             //多选按钮数组
	private ButtonGroup textGroup, nameGroup, sizeGroup, colorGroup;//四个按钮组
	private String textName[] = {"Java is a simple language",
		"This is an example for menu",
		"Today is Tuesday of week" };
	private String nameName[] = { "Dialog", "DialogInput", "Monospaced", "Serif", "SansSerif" };
	private String sizeName[] = { "16", "24", "32", "40" };
	private String colorName[] = { "red", "green", "blue", "cyan" };
	private Color colorValue[] = { Color.red, Color.green, Color.blue, Color.cyan };  //颜色组
	private String styleName[] = { "BOLD", "ITALIC" };
	private Font font;
	private JLabel label;
	
	//弹出菜单的成员
	private JPopupMenu popupMenu;
	private JRadioButtonMenuItem framesize[];
	private String framesizeName[] = { "大尺寸", "小尺寸" };
	private ButtonGroup framesizeGroup;
	
	public GUIDemo13()
	{
		super( "菜单构建演示" );
		
		//从上到下建立菜单的各个成员并由下到上地构建菜单
		bar = new JMenuBar();
		
		mainMenu = new JMenu[ mainMenuName.length ];
		for(int i=0; i<mainMenuName.length; i++)
		{
			mainMenu[i] = new JMenu( mainMenuName[i] );
		}
		mainMenu[0].setToolTipText("文件操作");
		mainMenu[0].setMnemonic(KeyEvent.VK_F);
		
		mainMenu[1].setToolTipText("文件编辑");
		mainMenu[1].setMnemonic(KeyEvent.VK_E);
		
		mainMenu[2].setToolTipText("标签操作");
		mainMenu[2].setMnemonic(KeyEvent.VK_L);
		
		mainMenu[3].setToolTipText("字体操作");
		mainMenu[3].setMnemonic(KeyEvent.VK_O);
		
		mainMenu[4].setToolTipText("为标签设定颜色");
		mainMenu[4].setMnemonic(KeyEvent.VK_C);
		
		item1 = new JMenuItem[ item1Name.length ];
		for(int i=0; i<item1Name.length; i++)
		{
			item1[i] = new JMenuItem( item1Name[i] );
		}
		item1[0].setMnemonic(KeyEvent.VK_N);
		item1[0].setIcon( new ImageIcon( "new.gif" ));
		
		item1[1].setMnemonic(KeyEvent.VK_O);
		item1[1].setIcon( new ImageIcon( "open.gif" ));
		
		item1[2].setMnemonic(KeyEvent.VK_C);
		
		item1[3].setMnemonic(KeyEvent.VK_S);
		item1[3].setIcon( new ImageIcon( "save.gif" ));
		
		item1[4].setMnemonic(KeyEvent.VK_A);
		
		item1[5].setMnemonic(KeyEvent.VK_X);
		//为退出菜单项加载监听器
		item1[5].addActionListener
		(
			new ActionListener()
			{
				public void actionPerformed( ActionEvent event )
				{
					System.exit( 0 );
				}
			}
		);
		
		item2 = new JMenuItem[ item2Name.length ];
		for(int i=0; i<item2Name.length; i++)
		{
			item2[i] = new JMenuItem( item2Name[i] );
		}
		item2[0].setMnemonic(KeyEvent.VK_T);
		item2[1].setMnemonic(KeyEvent.VK_C);
		item2[2].setMnemonic(KeyEvent.VK_P);
		item2[3].setMnemonic(KeyEvent.VK_L);
		item2[4].setMnemonic(KeyEvent.VK_F);
		item2[5].setMnemonic(KeyEvent.VK_R);
		item2[6].setMnemonic(KeyEvent.VK_A);
		
		menu3 = new JMenu( "标签设定" );
		
		menu4 = new JMenu[ menu4Name.length ];
		for(int i=0; i<menu4Name.length; i++)
		{
			menu4[i] = new JMenu( menu4Name[i] );
		}
		
		menu5 = new JMenu( "颜色设定" );
		
		//由此开始加载监听器到四个单选按钮数组和多选按钮数组
		ActionProcessor aprocessor = new ActionProcessor();
		ItemProcessor iprocessor = new ItemProcessor();
		
		textGroup = new ButtonGroup();
		text = new JRadioButtonMenuItem[ textName.length ];
		for(int i=0; i<textName.length; i++)
		{
			text[i] = new JRadioButtonMenuItem( textName[i] );
			textGroup.add( text[i] );
			menu3.add( text[i] );
			text[i].addActionListener( aprocessor );
		}
		
		nameGroup = new ButtonGroup();
		name = new JRadioButtonMenuItem[ nameName.length ];
		for(int i=0; i<nameName.length; i++)
		{
			name[i] = new JRadioButtonMenuItem( nameName[i] );
			nameGroup.add( name[i] );
			menu4[0].add( name[i] );
			name[i].addActionListener( aprocessor );
		}
		
		style = new JCheckBoxMenuItem[ styleName.length ];
		for(int i=0; i<styleName.length; i++)
		{
			style[i] = new JCheckBoxMenuItem( styleName[i] );
			menu4[1].add( style[i] );
			style[i].addItemListener( iprocessor );
		}
		
		sizeGroup = new ButtonGroup();
		size = new JRadioButtonMenuItem[ sizeName.length ];
		for(int i=0; i<sizeName.length; i++)
		{
			size[i] = new JRadioButtonMenuItem( sizeName[i] );
			sizeGroup.add( size[i] );
			menu4[2].add( size[i] );
			size[i].addActionListener( aprocessor );
		}
		
		colorGroup = new ButtonGroup();
		color = new JRadioButtonMenuItem[ colorName.length ];
		for(int i=0; i<colorName.length; i++)
		{
			color[i] = new JRadioButtonMenuItem( colorName[i] );
			colorGroup.add( color[i] );
			menu5.add( color[i] );
			color[i].addActionListener( aprocessor );
		}
		
		mainMenu[0].add( item1[0] );
		mainMenu[0].add( item1[1] );
		mainMenu[0].add( item1[2] );
		mainMenu[0].addSeparator();
		mainMenu[0].add( item1[3] );
		mainMenu[0].add( item1[4] );
		mainMenu[0].addSeparator();
		mainMenu[0].add( item1[5] );
		
		mainMenu[1].add( item2[0] );
		mainMenu[1].add( item2[1] );
		mainMenu[1].add( item2[2] );
		mainMenu[1].add( item2[3] );
		mainMenu[1].addSeparator();
		mainMenu[1].add( item2[4] );
		mainMenu[1].add( item2[5] );
		mainMenu[1].addSeparator();
		mainMenu[1].add( item2[6] );
		
		mainMenu[2].add( menu3 );
		
		mainMenu[3].add( menu4[0] );
		mainMenu[3].add( menu4[1] );
		mainMenu[3].add( menu4[2] );
		
		mainMenu[4].add( menu5 );
		
		for(int i=0; i<mainMenu.length; i++)
		{
			bar.add( mainMenu[i] );
		}
		
		setJMenuBar( bar );
		//到此主菜单构建完毕
		
		//构建弹出菜单
		popupMenu = new JPopupMenu();
		
		framesizeGroup = new ButtonGroup();
		framesize = new JRadioButtonMenuItem[ framesizeName.length ];
		for(int i=0; i<framesizeName.length; i++)
		{
			framesize[i] = new JRadioButtonMenuItem( framesizeName[i] );
			framesizeGroup.add( framesize[i] );
			popupMenu.add( framesize[i] );
			framesize[i].addActionListener( aprocessor );
		}
		
		label = new JLabel( "Now the label is empty",SwingConstants.CENTER );
		font = new Font( "Monospaced", Font.PLAIN, 16);
		label.setFont( font );
		label.setForeground( Color.black );
		
		getContentPane().setBackground( Color.yellow );
		getContentPane().add( label, BorderLayout.CENTER );
		
		//为主窗体加载鼠标监听器
		addMouseListener
		(
			new MouseAdapter()
			{
				public void mousePressed( MouseEvent event )
				{
					if ( event.isPopupTrigger() )
					popupMenu.show( event.getComponent(), event.getX(), event.getY() );
				}
				
				public void mouseReleased( MouseEvent event )
				{
					if ( event.isPopupTrigger() )
					popupMenu.show( event.getComponent(), event.getX(), event.getY() );
				}
			}
		);
		
		setSize( 600, 160 );
		setVisible( true );
	}
	
	public static void main( String args[] )
	{
		GUIDemo13 app = new GUIDemo13();
		app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}
	
	private class ActionProcessor implements ActionListener
	{
		public void actionPerformed( ActionEvent event )
		{
			//逐个检验JRadioButtonMenuItem组
			for ( int i = 0; i < text.length; i++ )
			if( text[i].isSelected() )
			{
				label.setText( text[i].getText() );
				break;
			}
			
			for ( int i = 0; i < name.length; i++ )
			if( event.getSource() == name[i] )
			{
				font = new Font( name[i].getText(), font.getStyle(), font.getSize() );
				label.setFont( font );
				break;
			}
			
			for ( int i = 0; i < size.length; i++ )
			if( event.getActionCommand() == size[i].getText() )
			{
				font = new Font( font.getName(), font.getStyle(), Integer.parseInt( size[i].getText()) );
				label.setFont( font );
				break;
			}
			
			for ( int i = 0; i < color.length; i++ )
			if( color[i].isSelected() )
			{
				label.setForeground( colorValue[i] );
				break;
			}
			
			if( framesize[0].isSelected() )
			{
				setSize( 700, 200 );
				show();
			}
			if( framesize[1].isSelected() )
			{
				setSize( 600, 160 );
				show();
			}
			
			repaint();
		}
	}
	
	private class ItemProcessor implements ItemListener
	{
		public void itemStateChanged( ItemEvent e )
		{
			int tempStyle = 0;
			if ( style[ 0 ].isSelected() ) tempStyle += Font.BOLD;
			if ( style[ 1 ].isSelected() ) tempStyle += Font.ITALIC;
			font = new Font( font.getName(), tempStyle, font.getSize() );
			label.setFont( font );
			
			repaint();
		}
	}
}

⌨️ 快捷键说明

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