首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

界面设计之swing兑现软键盘

2013-01-27 
界面设计之swing实现软键盘原理: 1、焦点控制,软件盘的组件需要设置为不可获取焦点 2、键盘事件模拟,使用Rob

界面设计之swing实现软键盘


原理:

1、焦点控制,软件盘的组件需要设置为不可获取焦点

2、键盘事件模拟,使用Robot模拟按钮事件

3、使用JPopup作为弹出窗口的容器


界面设计之swing兑现软键盘
?

?

import com.sun.glass.events.KeyEvent;import java.awt.AWTException;import java.awt.Robot;import java.awt.event.ActionEvent;import java.util.HashMap;import java.util.Map;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.JButton;import javax.swing.JFrame;/** * * @author joe */public class NumberInputPnl extends javax.swing.JPanel {    private Map<String, Integer> keyCodeMap;  private Robot robot;  private Action clickAction = new AbstractAction() {    public void actionPerformed(ActionEvent e) {      JButton b = (JButton) e.getSource();      Integer code = keyCodeMap.get(b.getName());      if (code != null) {        robot.keyPress(code);        robot.keyRelease(code);      }    }  };  /**   * Creates new form NumberInputPnl   */  public NumberInputPnl() {    initComponents();    this.setFocusable(false);    try {      robot = new Robot();    } catch (AWTException ex) {      Logger.getLogger(NumberInputPnl.class.getName()).log(Level.SEVERE, null, ex);    }    keyCodeMap = new HashMap<String, Integer>();    for (int i = 0; i < 10; i++) {      keyCodeMap.put(String.valueOf(i), KeyEvent.VK_0 + i);    }    keyCodeMap.put("+", KeyEvent.VK_ADD);    keyCodeMap.put("-", KeyEvent.VK_SUBTRACT);    keyCodeMap.put(".", KeyEvent.VK_DECIMAL);    keyCodeMap.put("<-", KeyEvent.VK_BACKSPACE);        keyCodeMap.put("--", KeyEvent.VK_F3);    keyCodeMap.put("++", KeyEvent.VK_F4);  }    public static void main(String[] args) {    java.awt.EventQueue.invokeLater(new Runnable() {      public void run() {        JFrame f = new JFrame("二维码生成");        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        f.add(new NumberInputPnl());        f.pack();        f.setVisible(true);      }    });  }  /**   * This method is called from within the constructor to initialize the form.   * WARNING: Do NOT modify this code. The content of this method is always   * regenerated by the Form Editor.   */  @SuppressWarnings("unchecked")  // <editor-fold defaultstate="collapsed" desc="Generated Code">                            private void initComponents() {    _1btn = new javax.swing.JButton();    _2btn = new javax.swing.JButton();    _3btn = new javax.swing.JButton();    plusBtn = new javax.swing.JButton();    _4btn = new javax.swing.JButton();    _5btn = new javax.swing.JButton();    _6btn = new javax.swing.JButton();    substractBtn = new javax.swing.JButton();    _7btn = new javax.swing.JButton();    _8btn = new javax.swing.JButton();    _9btn = new javax.swing.JButton();    decimalBtn = new javax.swing.JButton();    _0btn = new javax.swing.JButton();    jButton14 = new javax.swing.JButton();    jButton15 = new javax.swing.JButton();    jButton16 = new javax.swing.JButton();    setLayout(new java.awt.GridLayout(4, 4));    _1btn.setAction(clickAction);    _1btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _1btn.setText("1");    _1btn.setFocusable(false);    _1btn.setName("1"); // NOI18N    add(_1btn);    _2btn.setAction(clickAction);    _2btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _2btn.setText("2");    _2btn.setFocusable(false);    _2btn.setName("2"); // NOI18N    add(_2btn);    _3btn.setAction(clickAction);    _3btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _3btn.setText("3");    _3btn.setFocusable(false);    _3btn.setName("3"); // NOI18N    add(_3btn);    plusBtn.setAction(clickAction);    plusBtn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    plusBtn.setText("+");    plusBtn.setFocusable(false);    plusBtn.setName("+"); // NOI18N    add(plusBtn);    _4btn.setAction(clickAction);    _4btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _4btn.setText("4");    _4btn.setFocusable(false);    _4btn.setName("4"); // NOI18N    add(_4btn);    _5btn.setAction(clickAction);    _5btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _5btn.setText("5");    _5btn.setFocusable(false);    _5btn.setName("5"); // NOI18N    add(_5btn);    _6btn.setAction(clickAction);    _6btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _6btn.setText("6");    _6btn.setFocusable(false);    _6btn.setName("6"); // NOI18N    add(_6btn);    substractBtn.setAction(clickAction);    substractBtn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    substractBtn.setText("-");    substractBtn.setFocusable(false);    substractBtn.setName("-"); // NOI18N    add(substractBtn);    _7btn.setAction(clickAction);    _7btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _7btn.setText("7");    _7btn.setFocusable(false);    _7btn.setName("7"); // NOI18N    add(_7btn);    _8btn.setAction(clickAction);    _8btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _8btn.setText("8");    _8btn.setFocusable(false);    _8btn.setName("8"); // NOI18N    add(_8btn);    _9btn.setAction(clickAction);    _9btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _9btn.setText("9");    _9btn.setFocusable(false);    _9btn.setName("9"); // NOI18N    add(_9btn);    decimalBtn.setAction(clickAction);    decimalBtn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    decimalBtn.setText(".");    decimalBtn.setFocusable(false);    decimalBtn.setName("."); // NOI18N    add(decimalBtn);    _0btn.setAction(clickAction);    _0btn.setFont(new java.awt.Font("宋体", 1, 30)); // NOI18N    _0btn.setText("0");    _0btn.setFocusable(false);    _0btn.setName("0"); // NOI18N    add(_0btn);    jButton14.setAction(clickAction);    jButton14.setText("退格(<-)");    jButton14.setFocusable(false);    jButton14.setName("<-"); // NOI18N    add(jButton14);    jButton15.setAction(clickAction);    jButton15.setText("加数量");    jButton15.setFocusable(false);    jButton15.setName("++"); // NOI18N    add(jButton15);    jButton16.setAction(clickAction);    jButton16.setText("减数量");    jButton16.setFocusable(false);    jButton16.setName("--"); // NOI18N    add(jButton16);  }// </editor-fold>                          // Variables declaration - do not modify                       private javax.swing.JButton _0btn;  private javax.swing.JButton _1btn;  private javax.swing.JButton _2btn;  private javax.swing.JButton _3btn;  private javax.swing.JButton _4btn;  private javax.swing.JButton _5btn;  private javax.swing.JButton _6btn;  private javax.swing.JButton _7btn;  private javax.swing.JButton _8btn;  private javax.swing.JButton _9btn;  private javax.swing.JButton decimalBtn;  private javax.swing.JButton jButton14;  private javax.swing.JButton jButton15;  private javax.swing.JButton jButton16;  private javax.swing.JButton plusBtn;  private javax.swing.JButton substractBtn;  // End of variables declaration                   }

??

热点排行