JAVA核心技术第一卷_9-8中关于菜单快捷键设置的问题

散人的纪念 2014-01-17 02:10:49
我是完全按照书上的代码写的(启动类中的代码没有按书上的写,嫌麻烦)
但是eclipe报错了,大致是没有那个方法的定义
下面是部分代码,下一层楼会有完整代码:
public class MenuFrame extends JFrame
{
public MenuFrame()
{
//File 菜单
JMenu fileMenu = new JMenu("File");


fileMenu.add( new TestAction("New"));//新建

JMenuItem openItem = fileMenu.add( new TestAction("Open") );//打开

openItem.setAccelerator(KeyStore.getKeyStroke("ctrl O") );//就是这一行


这是eclipse的提示截图:




...全文
587 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2014-01-20
  • 打赏
  • 举报
回复
引用 9 楼 u010153631 的回复:
[quote=引用 8 楼 huntor 的回复:] 错误提示是 KeyStore 没有 getStroke 倒是注释掉的那行居然是正确的,截图里怎么就是错误的?
这。。。 我遇到过很多次这种事了,它的提示也只有那一个函数,这是怎么回事?我遇到鬼了?[/quote] 注释掉的怎么说小写的keyStroke
散人的纪念 2014-01-20
  • 打赏
  • 举报
回复
引用 8 楼 huntor 的回复:
错误提示是 KeyStore 没有 getStroke 倒是注释掉的那行居然是正确的,截图里怎么就是错误的?
这。。。 我遇到过很多次这种事了,它的提示也只有那一个函数,这是怎么回事?我遇到鬼了?
散人的纪念 2014-01-18
  • 打赏
  • 举报
回复
引用 4 楼 huxiweng 的回复:
组合键吗? http://blog.csdn.net/withiter/article/details/17247617
我看了那篇文章,很不错的思路,就是不知道程序逻辑多点的话,会不会让代码变得更复杂
散人的纪念 2014-01-18
  • 打赏
  • 举报
回复
引用 3 楼 jintianhen1 的回复:
国外的书例子都很绕的,建立看写简单明了又能说明问题的例子
对啊,我看QT的时候,一个程序就把所有的对话框都搞完了,我看的那个头大
huntor 2014-01-18
  • 打赏
  • 举报
回复
错误提示是 KeyStore 没有 getStroke 倒是注释掉的那行居然是正确的,截图里怎么就是错误的?
huntor 2014-01-18
  • 打赏
  • 举报
回复
KeyStroke 拼写成 KeyStore 怪谁?
teemai 2014-01-17
  • 打赏
  • 举报
回复
静山晚风 2014-01-17
  • 打赏
  • 举报
回复
国外的书例子都很绕的,建立看写简单明了又能说明问题的例子
静山晚风 2014-01-17
  • 打赏
  • 举报
回复
是不是引入的包不对呢,或者去少jar包
散人的纪念 2014-01-17
  • 打赏
  • 举报
回复
启动类: Main.java

public class Main
{

	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		MenuFrame test = new MenuFrame();

	}

}
大致在这个文件 的26行,我用注释标记了 MenuFrame:


/**
 * 菜单测试
 * @author Administrator
 *
 */

import java.awt.*;
import java.awt.event.*;
import java.awt.EventQueue;
import java.security.KeyStore;

import javax.swing.*;

public class MenuFrame extends JFrame
{
	public MenuFrame()
	{
		//File 菜单
		JMenu fileMenu = new JMenu("File");
		
		
		fileMenu.add( new TestAction("New"));//新建
		
		JMenuItem openItem = fileMenu.add( new TestAction("Open") );//打开
		
		openItem.setAccelerator(KeyStore.getKeyStroke("ctrl O") );//就是这一行
		
		fileMenu.addSeparator();//菜单分隔符
		
		saveAction = new TestAction("Save");//保存
		JMenuItem saveItem = fileMenu.add( saveAction );
		//saveItem.setAccelerator(keyStroke.getKeyStroke("ctrl S"));
		
		saveAsAction = new TestAction("Save As");
		fileMenu.add( saveAsAction );
		fileMenu.addSeparator();
		
		fileMenu.add( new AbstractAction("Exit")
		{

			@Override
			public void actionPerformed(ActionEvent e)
			{
				// TODO Auto-generated method stub
				System.exit( 0 );
				
			}
			
		});
		
		
		//Edit->Option
		readonlyItem = new JCheckBoxMenuItem("Read-only");
		readonlyItem.addActionListener( new ActionListener()
		{

			@Override
			public void actionPerformed(ActionEvent e)
			{
				// TODO Auto-generated method stub
				boolean saveOk = !readonlyItem.isSelected();
				saveAction.setEnabled( saveOk );
				saveAsAction.setEnabled( saveOk );
				
			}
			
		});
		
		ButtonGroup group = new ButtonGroup();
		
		JRadioButtonMenuItem insertItem = new JRadioButtonMenuItem("Insert");
		insertItem.setSelected(true);
		JRadioButtonMenuItem overtypeItem = new JRadioButtonMenuItem("Overtype");
		
		group.add( insertItem );
		group.add( overtypeItem );
		
		
		
		//Edit和右键菜单的菜单项
		Action cutAction = new TestAction("Cut");
		Action copyAction = new TestAction("Copy");
		Action pasteAction = new TestAction("Paste");
		
		//Edit
		JMenu editMenu = new JMenu("Edit");
		editMenu.add( cutAction );
		editMenu.add( copyAction );
		editMenu.add( pasteAction );
		
		
		JMenu optionMenu = new JMenu("Options");
		
		optionMenu.add( readonlyItem );
		optionMenu.addSeparator();
		optionMenu.add( insertItem );
		optionMenu.add( overtypeItem );
		
		editMenu.addSeparator();
		editMenu.add( optionMenu );
		
		
		JMenu helpMenu = new JMenu("Help");
		helpMenu.setMnemonic('H');
		
		JMenuItem indexItem = new JMenuItem("Index");
		indexItem.setMnemonic('I');
		helpMenu.add( indexItem );
		
		
		Action aboutAction = new TestAction("About");
		aboutAction.putValue(Action.MNEMONIC_KEY, new Integer('A'));
		helpMenu.add( indexItem );
		
		
		//添加所有顶层菜单
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar( menuBar );
		
		menuBar.add( fileMenu );
		menuBar.add( editMenu );
		menuBar.add( helpMenu );
		
		//添加右键菜单
		popup = new JPopupMenu();
		popup.add( cutAction );
		popup.add( copyAction );
		popup.add( pasteAction );
		
		JPanel panel = new JPanel();
		panel.setComponentPopupMenu(popup);
		add( panel );
		
		
		panel.addMouseListener( new MouseAdapter()
		{
			
		});
		
		
		//设置窗口样式
		this.setTitle("菜单测试");
		this.setLocation( 400, 300 );
		this.setSize( 300, 200 );
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	

	private Action saveAction;
	private Action saveAsAction;
	private	JCheckBoxMenuItem readonlyItem;
	private JPopupMenu popup;
	
	class TestAction extends AbstractAction
	{
		public TestAction( String name )
		{
			super( name );
		}

		@Override
		public void actionPerformed(ActionEvent e)
		{
			// TODO Auto-generated method stub
			System.out.println(getValue(Action.NAME) + " selected.");
			
		}
		
	}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧