首先说明一点

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

按键绑定键盘是按键有了和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按键绑定到键盘和打印组件的更多相关文章

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

    样式绑定 事件处理 表单 Vue组件 样式绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  2. Blazor组件自做八 : 使用JS隔离封装屏幕键盘kioskboard.js组件

    1. 运行截图 演示地址 2. 在文件夹wwwroot/lib,添加kioskboard子文件夹,添加kioskboards.js文件 2.1 常规操作,懒加载js库, export function ...

  3. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  4. Xamarin.Android 绑定友盟社会化分享组件

    Xamarin.Android 绑定友盟社会化分享组件 最近在开发博客园Android App的时候需要用到友盟社会化分享组件,在github上搜了一下都没有找到最新版本绑定好的项目,就自己动手来绑定 ...

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

    This example demonstrates how to list all the key bindings in a component. Text components have an a ...

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

    在网上查询的按键码如下: 一.键盘按键和键盘对应代码表:   字母按键码A <--------> 65 B <--------> 66 C <--------> 6 ...

  7. [原创]cocos2d-x研习录-第三阶 特性之按键与虚拟键盘

    Cocos2D-x引擎支持按键事件,它能检测设备的键盘输入并处理相应的事件.而基于不同操作系统的移动设备,可供用户操作的按键数量和功能都存在差异.   Cocos2D-x使用CCKeypadDeleg ...

  8. angular,vue,react的基本语法—动态属性、事件绑定、ref,angular组件创建方式

    基本语法: 动态属性: vue: v-bind:attr="msg" :attr="msg" react: attr={msg} angular [attr]= ...

  9. js 绑定的键盘事件

    在全局绑定键盘事件 document.onkeydown = function(event){        //在全局中绑定按下事件 var e  = event  ||  window.e; va ...

随机推荐

  1. 转:Android布局优化

    categories: Android 在Android开发中,我们常用的布局方式主要有LinearLayout.RelativeLayout.FrameLayout等,通过这些布局我们可以实现各种各 ...

  2. CSS中.和#区别

    一.问题来源 制作导航栏,参考别人的代码,发现的. 二.解析 2.1 概述 id:用来定义页面中大的样式,如栏目划分,顶部,正文,底部等:用#top的形式来定义: class:用来定义一些比较细节的样 ...

  3. Windows系统编程之进程间通信

    Windows系统编程之进程间通信作者:北极星2003来源:看雪论坛(www.pediy.com)Windows 的IPC(进程间通信)机制主要是异步管道和命名管道.(至于其他的IPC方式,例如内存映 ...

  4. Windows NT 驱动程序开发人员提示 -- 应注意避免的事项

    下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 1.  一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度 ...

  5. Binary Tree Level Order Traversal II——LeetCode

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  6. HDOJ(HDU) 1985 Conversions(汇率转换)

    Problem Description Conversion between the metric and English measurement systems is relatively simp ...

  7. HDU5039--Hilarity DFS序+线段树区间更新 14年北京网络赛

    题意:n个点的树,每个条边权值为0或者1, q次操作 Q 路径边权抑或和为1的点对数, (u, v)(v, u)算2个. M i修改第i条边的权值 如果是0则变成1, 否则变成0 作法: 我们可以求出 ...

  8. B - The Accomodation of Students - hdu 2444(最大匹配)

    题意:现在有一些学生给你一下朋友关系(不遵守朋友的朋友也是朋友),先确认能不能把这些人分成两组(组内的人要相互不认识),不能分的话输出No(小写的‘o’ - -,写成了大写的WA一次),能分的话,在求 ...

  9. 简单的多表插入(oracle)

    简单的多表插入语句: insert all into 表1(字段1,2...) values(值1,值2......) into 表2(字段1,2...)) values(值1,值2......) s ...

  10. 如何唯一确定一台iOS设备

    如果你的iOS应用需要针对设备做特定的操作,或者需要硬件的信息来进行判定等等的,你就需要对iOS设备进行唯一性的判定. 苹果设备有个先天的东西符合这个需求,UDID,这个东东用iTunes就可以看到, ...