GUI按键绑定到键盘和打印组件

Posted Kooing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GUI按键绑定到键盘和打印组件相关的知识,希望对你有一定的参考价值。

首先说明一点

按键绑定到键盘和设置快捷键是不一样的

按键绑定键盘是按键有了和button一样的功能,没有焦点时也能使用(WHEN_IN_FOCUSED_WINDOW),甚至有时候单独作为一个事件(有自己独立的AbstractAction子类的时候 

设置快捷键紧紧是设置了快捷键(有点牵强)

键盘事实使用的监视器更加严格,是ActionListener的子接口Action, 不过AbstractAction类已经帮我实现了,我们只需要像以前那样extends AbstractAction,然后重写ActionPerformed()

InputMap inputmap1=button1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);//获得映射
inputmap1.put(KeyStroke.getKeyStroke("A"),"dog");//前面获得键位,后面参数是一个映射的关键字
//为按钮的键盘操作指定监视器有两个语句
ActionMap actionmap1=button1.getActionMap()//获得一个可以加监视器的ActionMap对象
actionmap.put("dog",listener);//终于添加监视器了 - -

完整代码

class MyWin extends JFrame implements ActionListener{
    JButton button1;
    MyWin(){
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
        setLayout(new FlowLayout());
        button1=new JButton("click");
        add(button1);
        add(new JTextField(8));
        ActionPolice actionPolice1=new ActionPolice();
        InputMap inputmap1=button1.getInputMap(JComponent.WHEN_FOCUSED);
        inputmap1.put(KeyStroke.getKeyStroke("A"),"dog");
        ActionMap actionmap1=button1.getActionMap();
        actionmap1.put("dog", actionPolice1);
    }
}

class ActionPolice extends AbstractAction{
    public void actionPerformed(ActionEvent e){
        JButton button1=(JButton)e.getSource();
        int x=button1.getBounds().x;
        int y=button1.getBounds().y;
        button1.setLocation(x+10,y+10);
    }
}

关于打印组件那部分

很遗憾,并不知道是什么,代码有莫名其妙的问题

不理了,交上代码就跑路

class MyWin extends JFrame implements ActionListener{
    PrintJob p=null;
    Graphics g=null;
    JTextArea textArea1=new JTextArea(10,10);
    JButton button1=new JButton("文本框"),button2=new JButton("window"),button3=new JButton("button");
    MyWin(){
        super("dffsd");
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
//        setLayout(new FlowLayout());
        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);
        add(textArea1,"Center");
        JPanel pane1=new JPanel();
        pane1.add(button1);
        pane1.add(button2);
        pane1.add(button3);
        add(pane1,"South");
    }
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==button1){
            p=((Component)e.getSource()).getToolkit().getPrintJob(this,"ok",null);
            g=p.getGraphics();
            g.translate(120, 200);
            textArea1.printAll(g);
            g.dispose();
            p.end();
        }
        if(e.getSource()==button2){
            p=getToolkit().getPrintJob(this,"ok",null);
            g=p.getGraphics();
            g.translate(120, 200);
            this.printAll(g);
            g.dispose();
            p.end();
        }
        if(e.getSource()==button2){
            p=getToolkit().getPrintJob(this,"ok",null);
            g=p.getGraphics();
            g.translate(120,200);
            button1.printAll(g);
            g.translate(78, 0);
            button2.printAll(g);
            g.translate(66, 0);
            button3.printAll(g);
            g.dispose();
            p.end();
        }
    }

 

以上是关于GUI按键绑定到键盘和打印组件的主要内容,如果未能解决你的问题,请参考以下文章

unity3d 虚拟手柄

Java/swing:控制台组件?

python学习之GUI(pygame键盘)

键盘事件

使用python立即将按键打印到屏幕上

游戏手柄 + 键盘虚拟摇杆