当前位置: 首页 > 知识库问答 >
问题:

Java中的快捷键(助记符)

司寇祖鹤
2023-03-14
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Calculator extends JFrame implements ActionListener{
    JLabel fval,sval;
    JTextField tf1,tf2;
    JButton add,subtract,multiply,divide,compute,reset; 
    String s="";
    JPanel jp = new JPanel();
    Calculator(){
        jp.setLayout(new GridLayout(5,2));
        fval=new JLabel("First Value: ");
        sval=new JLabel("Second Value: ");
        tf1=new JTextField();
        tf2=new JTextField();
        add=new JButton("ADD");
        subtract=new JButton("SUBTRACT");
        multiply=new JButton("MULTIPLY");
        divide=new JButton("DIVIDE");
        compute=new JButton("COMPUTE");
        reset=new JButton("RESET");
        jp.add(fval);
        jp.add(tf1);
        jp.add(sval);
        jp.add(tf2);
        jp.add(add);
        jp.add(subtract);
        jp.add(multiply);
        jp.add(divide);
        jp.add(compute);
        jp.add(reset);
        add.addActionListener(this);
        subtract.addActionListener(this);
        multiply.addActionListener(this);
        divide.addActionListener(this);
        compute.addActionListener(this);
        reset.addActionListener(this);
        this.setTitle("Calculator");
        this.setBounds(10,10,300,300);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
        add(jp);
        
        //ADD
       Action addAction = new AbstractAction("ADD") {
 
            @Override
            public void actionPerformed(ActionEvent evt) {
                s="ADD";
            }
        };

        String key1 = "ADD";
        add.setAction(addAction);
        addAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_A);
        add.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_DOWN_MASK), key1);
        add.getActionMap().put(key1, addAction);
        
        //SUBTRACT
        Action subAction = new AbstractAction("SUBTRACT") {
            @Override
            public void actionPerformed(ActionEvent evt) {
                s="SUBTRACT";
            }
        };
        
        String key2 = "SUBTRACT";
        subtract.setAction(subAction);
        subAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_S);
        subtract.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK), key2);     
        subtract.getActionMap().put(key2, subAction);
        
        //MULTIPLY
         Action mulAction = new AbstractAction("MULTIPLY") {
            @Override
            public void actionPerformed(ActionEvent evt) {
                s="MULTIPLY";
            }
        };
        
        String key3 = "MULTIPLY";
        multiply.setAction(mulAction);
        mulAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_M);
        multiply.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_M, KeyEvent.CTRL_DOWN_MASK), key3);     
        multiply.getActionMap().put(key3, mulAction);
        
        //DIVIDE
        Action divAction = new AbstractAction("DIVIDE") {
            @Override
            public void actionPerformed(ActionEvent evt) {
                s="DIVIDE";
            }
        };
        
        String key4 = "DIVIDE";
        divide.setAction(divAction);
        divAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_D);
        divide.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_D, KeyEvent.CTRL_DOWN_MASK), key4);     
        divide.getActionMap().put(key4, divAction);
        
    }
    
    public void Add(double n1,double n2){
        JOptionPane.showMessageDialog(this, +(n1+n2), "Answer", JOptionPane.INFORMATION_MESSAGE);
    }
    public void Subtract(double n1,double n2){
        JOptionPane.showMessageDialog(this, +(n1-n2), "Answer", JOptionPane.INFORMATION_MESSAGE);
    }
    public void Multiply(double n1,double n2){
        JOptionPane.showMessageDialog(this, +(n1*n2), "Answer", JOptionPane.INFORMATION_MESSAGE);
    }
    public void Divide(double n1,double n2){
        JOptionPane.showMessageDialog(this, +(n1/n2), "Answer", JOptionPane.INFORMATION_MESSAGE);
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        String in=e.getActionCommand();
        if(in.equals("COMPUTE")){
        try {
            double n1=Double.parseDouble(tf1.getText());
            double n2=Double.parseDouble(tf2.getText());
        
            if(s.equals("ADD"))
                Add(n1,n2);
            else if(s.equals("SUBTRACT"))
                Subtract(n1,n2);
            else if(s.equals("MULTIPLY"))
                Multiply(n1,n2);
            else if(s.equals("DIVIDE"))
                Divide(n1,n2);
            else if(in.equals("RESET")){
                tf1.setText("");
                tf2.setText("");
                s="";
            }else
            {
                s=in;
         }
        }
        catch (NumberFormatException e1) {
            compute.setSelected(true);
        JOptionPane.showMessageDialog(this, "Math Error.", "Warning", JOptionPane.INFORMATION_MESSAGE);
    }
    }       
};
    
    public static void main(String[] args) {
        new Calculator();
    }  
}

提前感谢!

共有1个答案

东方修谨
2023-03-14

我只需要为计算,重置和退出按钮放快捷键。

我想你把“助记符”和“加速器”搞混了。

当聚焦组件时调用“助记符”。通过使用“alt”键加上按钮上文本的下划线字符来调用操作。

 类似资料:
  • 键盘快捷键可提升任务的速度,并可让工作更有效率。这里提供了约 50 种比较常见和常用的 After Effects 快捷键的可下载快捷键图示。 下载获取文件AfterEffects_KeyboardShortcuts.pdf After Effects 键盘快捷键的完整列表,可见此处。

  • 查看快捷键,在设置界面中搜索 “keymap”: 设置自己的快捷键 比如将代码变更 commit ,webstorm 默认是没有配置快捷键的,我们设置个 shift + c 。 搜索 commit : 找到操作项后,添加个新的快捷键,如果快捷键有冲突,webstorm 会有提示。 默认配置下的常用快捷键 mac book 下文的 ctrl 替换成 command 键。 查找/代替 快捷键 说明 c

  • Sketch 有一系列为数不多但相当实用的快捷键,他们能大大提高你的工作效率。   通用快捷键   ・control+h: 触发选区手柄 ・control+l: 触发自动参考线 ・control+g: 触发网格 ・Space: 抓手工具 ・Enter: 编辑所选图层 ・⌘+3: 滚动至所选图层 ・⌘+2: 放大所选图层 ・Z: 放大工具。按住 Z 键,用鼠标单击拖拽出一个区域放大。缩小啧使用 Z

  • Navicat 主窗口 键 动作 CTRL+G 设置位置文件夹 CTRL+#(# 代 表 0 至 9) 从收藏夹列表打开对象窗口 F6 命令列界面 CTRL+H 历史日志 CTRL+Q 新建查询 F12 仅显示活跃对象 常规 键 动作 CTRL+N 新建对象 SHIFT+CTRL+#(# 代 表 0 至 9) 添加收藏夹 F8 Navicat 主窗口 CTRL+TAB 或 SHIFT+CTRL+T

  • 常规 键 动作 COMMAND-R 刷新 COMMAND-N 新建对象 COMMAND-D 设计对象 SHIFT-COMMAND-D 复制对象 OPTION-SHIFT-#(# 代表 1 至 9) 添加到收藏夹 CONTROL-SHIFT-#(# 代表 1 至 9) 打开收藏夹链接 COMMAND-} 或 COMMAND-{ 选择下一个或上一个选项卡 COMMAND-> 或 COMMAND-< 选

  • Chrome DevTools有几个内置的快捷键,可以节省你的日常工作的时间。 本指南提供了Chrome DevTools中每个快捷键的快速参考。虽然一些快捷方式在全局范围内可用,但其他的快捷方式用于特定的某些单个面板,并根据它可以使用的位置分解。 您还可以在提示工具中找到快捷方式。将鼠标悬停在某个元素上以显示其提示工具。如果元素有快捷方式,提示工具将会包含它。 打开开发者工具 在Google C