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();
        }
    }
时间: 2024-10-24 12:50:24

GUI按键绑定到键盘和打印组件的相关文章

Atom编辑器折腾记_(4)按键绑定keymap

简介 Atom编辑器支持自定义按键绑定,文件格式是CSON; 何为CSON 官方解释: This file uses CoffeeScript Object Notation (CSON). 我的解释: JSON + CoffeeScript 写法基本是JSON的写法 按键绑定组成 如图: 设置内的键盘映射图很好的说明了 按键绑定 = 快捷键(Keystroke) + 执行命令(Command) + 来源(Source) + 选择器(Selector) 快捷键不用解释了 执行命令就是按下快捷键所

Vue基础语法(样式绑定,事件处理,表单,Vue组件)

样式绑定 事件处理 表单 Vue组件 样式绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script> <title>vue的样式绑定</title> <style> .a{ /*

Web打印组件jatoolsPrinter(转载)

应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说,因为浏览器的局限性,却要面对很多挑战.怎么样来进行基于web的套打,就是这么一个令多数程序员头痛不已的问题. 基于web的套打,难度在于要将浏览器中呈现的html,精确地打印到票据中,而且能够实现对分页位置的控制.下面就ie浏览器所能采用的套打解决方案,来个汇总分析,希望对大家有所帮助. jatoolsPrinter 是一款实现网页套打的免费

Python3 Tkinter基础 Frame bind 绑定敲击键盘事件 将按键打印到Shell中

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: from tkinter import * root=Tk() #创建一个框架,在这个框架中响应事件 frame=Frame(root, width=200,height=200, background='green') def callBack(event):

e860. 列出组件绑定的键盘键

This example demonstrates how to list all the key bindings in a component. Text components have an additional set of key bindings called a keymap. See e1005 列出JTextComponent中键盘映射绑定的键 for an example on how to list those key bindings. // List keystroke

Js键盘事件全面控制,回车按键事件,键盘对应按键码,按键事件兼容各个浏览器。

作者:827969653 在网上查询的按键码如下: 一.键盘按键和键盘对应代码表:   字母按键码A <--------> 65 B <--------> 66 C <--------> 67 D <--------> 68 E <--------> 69 F <--------> 70 G <--------> 71 H <--------> 72 I <--------> 73 J <--

java GUI编程(swing)之二swing按钮组件

swing的按钮组件.在widgets 类中. 要使用按钮,必须要导入JButton import javax.swing.JButton; 按钮需要加入到Frame里面 package gui; import java.awt.Frame; import javax.swing.JFrame; import javax.swing.JButton; /** * Created by admin on 2017/6/30. * java gui 学习 */ public class Gui ex

Python3 Tkinter基础 Frame bind 绑定鼠标左右键 打印点击的位置 event.x event.x_root

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: from tkinter import * root=Tk() #创建一个框架,在这个框架中响应事件 frame=Frame(root,width=200,height=200) def callBackLeft(event): print("相对于应用程序左上

GUI编程(三)-----非容器组件

常用的非容器组件有:JLabel.JTextField.JPasswordField.JRadioButton.JCheckBox.JComboBox.JTextArea. 基本用法: public static void main(String[] args) { JFrame frame= new JFrame("注册"); frame.setSize(500, 400); frame.setLocationRelativeTo(null); //创建一个面板 JPanel pan