当前位置: 代码迷 >> J2SE >> 怎么设置回车为快捷键,就像QQ发送消息一样
  详细解决方案

怎么设置回车为快捷键,就像QQ发送消息一样

热度:5974   发布时间:2013-02-25 00:00:00.0
如何设置回车为快捷键,就像QQ发送消息一样!
我在文本框设置了键盘监听 当释放enter时,方法内容跟发送按钮的一样,但是会多发送一行空格。
标准的设置Enter为发送是怎么设置的,只有一个ENTER键!

------解决方案--------------------------------------------------------
Java code
JTextField textfield = new JTextField(20);KeyStroke enter_keystroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0);Action send_message_then_clear_action = new AbstractAction(){    @Override public void actionPerformed(ActionEvent e){                       JTextField tf = (JTextField)e.getSource();        sendMessage(tf.getText());        tf.setText("");    }};InputMap inputmap = textfield.getInputMap();ActionMap actionmap = textfield.getActionMap();inputmap.put(enter_keystroke,"send-message-then-clear");actionmap.put("send-message-then-clear",send_message_then_clear_action);
------解决方案--------------------------------------------------------
Java code
package com.gui;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class ChatWin extends JFrame {    private static final long serialVersionUID = -5418344602348249043L;    private JPanel pup = new JPanel();    private JPanel pdown = new JPanel();    private JTextField txtCommand = new JTextField(45);    private JTextArea txtContent = new JTextArea();    private JButton btnExec = new JButton("Execute");    public ChatWin() {        // 指定框架的布局管理器        setLayout(new BorderLayout());        // 设置文本框,文本域字体        txtCommand.setFont(new Font("", Font.BOLD, 13));        txtContent.setFont(new Font("", Font.BOLD, 13));        // 指定面板的布局        pup.setLayout(new BorderLayout());        pdown.setLayout(new FlowLayout());        // 将文本域添加导面板中        pup.add(txtContent);        // 为文本域添加滚动条        pup.add(new JScrollPane(txtContent));        // 将文本框,按钮添加到面板中        pdown.add(txtCommand);        pdown.add(btnExec);        // 添加面板到框架中        this.add(pup, BorderLayout.CENTER);        this.add(pdown, BorderLayout.SOUTH);        // 设置事件        // 添加按钮事件        btnExec.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                sendMsg();            }        });        // 添加键盘Enter事件        txtCommand.addKeyListener(new KeyListener() {            public void keyPressed(KeyEvent e) {                // 当按下回车时                if (e.getKeyCode() == KeyEvent.VK_ENTER) {                    sendMsg();                }            }            public void keyReleased(KeyEvent e) {            }            public void keyTyped(KeyEvent e) {            }        });    }    private void sendMsg() {        String command = txtCommand.getText().trim();        txtContent.append("You: " + command + "\r\n");        txtCommand.setText("");    }    public static void main(String[] args) {        ChatWin frame = new ChatWin();        frame.setTitle("ChatWin");        frame.setSize(666, 444);        frame.setVisible(true);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }}
  相关解决方案