首先说明一点

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

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

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

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

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

完整代码

  1. class MyWin extends JFrame implements ActionListener{
  2. JButton button1;
  3. MyWin(){
  4. init();
  5. setVisible(true);
  6. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  7. }
  8. void init(){
  9. setLayout(new FlowLayout());
  10. button1=new JButton("click");
  11. add(button1);
  12. add(new JTextField(8));
  13. ActionPolice actionPolice1=new ActionPolice();
  14. InputMap inputmap1=button1.getInputMap(JComponent.WHEN_FOCUSED);
  15. inputmap1.put(KeyStroke.getKeyStroke("A"),"dog");
  16. ActionMap actionmap1=button1.getActionMap();
  17. actionmap1.put("dog", actionPolice1);
  18. }
  19. }
  20.  
  21. class ActionPolice extends AbstractAction{
  22. public void actionPerformed(ActionEvent e){
  23. JButton button1=(JButton)e.getSource();
  24. int x=button1.getBounds().x;
  25. int y=button1.getBounds().y;
  26. button1.setLocation(x+10,y+10);
  27. }
  28. }

关于打印组件那部分

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

不理了,交上代码就跑路

  1. class MyWin extends JFrame implements ActionListener{
  2. PrintJob p=null;
  3. Graphics g=null;
  4. JTextArea textArea1=new JTextArea(10,10);
  5. JButton button1=new JButton("文本框"),button2=new JButton("window"),button3=new JButton("button");
  6. MyWin(){
  7. super("dffsd");
  8. init();
  9. setVisible(true);
  10. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11. }
  12. void init(){
  13. // setLayout(new FlowLayout());
  14. button1.addActionListener(this);
  15. button2.addActionListener(this);
  16. button3.addActionListener(this);
  17. add(textArea1,"Center");
  18. JPanel pane1=new JPanel();
  19. pane1.add(button1);
  20. pane1.add(button2);
  21. pane1.add(button3);
  22. add(pane1,"South");
  23. }
  24. public void actionPerformed(ActionEvent e){
  25. if(e.getSource()==button1){
  26. p=((Component)e.getSource()).getToolkit().getPrintJob(this,"ok",null);
  27. g=p.getGraphics();
  28. g.translate(120, 200);
  29. textArea1.printAll(g);
  30. g.dispose();
  31. p.end();
  32. }
  33. if(e.getSource()==button2){
  34. p=getToolkit().getPrintJob(this,"ok",null);
  35. g=p.getGraphics();
  36. g.translate(120, 200);
  37. this.printAll(g);
  38. g.dispose();
  39. p.end();
  40. }
  41. if(e.getSource()==button2){
  42. p=getToolkit().getPrintJob(this,"ok",null);
  43. g=p.getGraphics();
  44. g.translate(120,200);
  45. button1.printAll(g);
  46. g.translate(78, 0);
  47. button2.printAll(g);
  48. g.translate(66, 0);
  49. button3.printAll(g);
  50. g.dispose();
  51. p.end();
  52. }
  53. }

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. 转:Thumbs.db是什么文件?是病毒吗?怎么处理?

    今天有朋友兴冲冲的问我,Thumbs.db是什么文件?是病毒吗?会不会对电脑产生危害. 很多朋友对Thumbs.db这个文件不了解,会以为是病毒,实际上并非如此.那么,Thumbs.db是什么文件?有 ...

  2. 【HDOJ】1314 Numerically Speaking

    学了几天的Java了,终于独立A了一道大数计算.感觉还得练Java啊. import java.util.Scanner; import java.math.BigInteger; import ja ...

  3. CentOS 6.5 安装realtek RTL8188CE无线网卡

    首先,要检查一下网络适配器的型号. [root@localhost sam]# lspci -nn | grep -i net03:00.0 Ethernet controller [0200]: R ...

  4. Assertions

    JUnit提供了许多重载的断言方法,这些方法均可以通过"import static org.junit.Assert.*"导入.方法的参数顺序一般都是([失败时打印的字符串消息], ...

  5. Spark Streaming 入门指南

    这篇博客帮你开始使用Apache Spark Streaming和HBase.Spark Streaming是核心Spark API的一个扩展,它能够处理连续数据流. Spark Streaming是 ...

  6. 自定义UINavigationItem的两种方法以及相应的隐藏方法

    第一种: UIImage *searchimage=[UIImage imageNamed:@"search.png"]; UIBarButtonItem *barbtn=[[[U ...

  7. RAC集群启动停止

    root用户执行 crsctl stop crscrsctl start crs /u01/app/11.2.0/grid/bin/crsctl stop crs

  8. 鼠标事件之鼠标滑过事件MOUSEOVER

    来源地址:http://www.g2room.com/jquery/index.php?p=example%2Fevent%2Fmouseover.html&n=%E9%BC%A0%E6%A0 ...

  9. wxPython学习笔记(三)

    要理解事件,我们需要知道哪些术语? 事件(event):在你的应用程序期间发生的事情,它要求有一个响应. 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件 ...

  10. 深入理解javascript之this

    javascript中的this含义很丰富,它能够是全局对象,当前对象或者是随意对象,这都取决于函数的调用方式.函数有下面几种调用方式:作为对象方法调用.作为函数调用.作为构造函数调用.apply或c ...