我在文本框设置了键盘监听 当释放enter时,方法内容跟发送按钮的一样,但是会多发送一行空格。
标准的设置Enter为发送是怎么设置的,只有一个ENTER键!
标准的设置Enter为发送是怎么设置的,只有一个ENTER键!
解决方案 »
- swing 如何实现如下的状态栏效果?
- 不改变原数组排序
- 关于String args[]的问题
- 想用JAVA写一个网络嗅探器,望大侠,指明一下学习方向
- 请教诸位高手一个算法,急!
- 一段代码编译通过了可是运行时却报告Exception in thread "main" java.lang.NoclasDefFoundError,可是我把它放在jbuilder却可正确运行,c
- 请问我编了main函数就一定会出现dos窗口嘛?来者给份
- connection pooling 问题,给我提示或实例,给你满意的分数!
- 连接占线导致另一个 hstmt,一般是什么原因引起的???20分!
- Root exception is java.net.MalformedURLException: no protocol: iiop//localhost:1
- 关于Java泛型的问题,知道的请进!!!
- iframe自适应高度
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);
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);
}}
QQ里可调的,可以回车发送,也可以Ctrl+Enter发送