双缓冲技术的介绍:

所有的Swing组件默认启用双缓冲绘图技术。使用双缓冲技术能改进频繁重绘GUI组件的显示效果(避免闪烁现象)JComponent组件默认启用双缓冲,无须自己实现双缓冲。如果想关闭双缓冲,可以在组件上调用setDoubleBuffered(false)方法。同学们无需深究双缓冲技术原理是怎么实现的,就记住有这么个技术就好了。

简单键盘驱动:

所有的Swing组件都提供了简单的键盘驱动。JComponent类提供了getInputMap()和getActionMap()两个方法。
其中
getInputMap()返回一个InputMap对象,该对象用于将 KeyStroke对象(代表键盘或其他类似输入设备的一次输入事件)和名字关联;
getActionMap() 返回一个ActionMap对象,该对象用于将指定名字和Action (Action接口是ActionListener接口的子接口,可作为一个事件监昕器使用)关联,从而可以允许用户通过键盘操作来替代鼠标驱动GUI上的Swing组件,相当于为GUI组件提供快捷键。

示例代码:

/**
* 文本框输入内容绑定事件
*/
jTextField.getInputMap().put(KeyStroke.getKeyStroke('\n'),"send"); // 绑定获取到输入字符为\n即回车键,对应别名为“send"
jTextField.getActionMap().put("send",sendListener); //指定别名对应触发的监听器
/**
完整代码
package swingtest;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.io.FileFilter; /**
* @ClassName BindingKeyTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/5/8.
*/
public class BindingKeyTest {
public static void main(String[] args) {
JFrame jFrame = new JFrame("测试键盘驱动");
/**
* 文本框
*/
JTextArea jTextArea = new JTextArea(10,60);
JScrollPane jScrollPane = new JScrollPane(jTextArea);
jFrame.add(jScrollPane);
/**
* 输入框 和发送按钮
*/
JTextField jTextField = new JTextField(50);
JButton sendButton = new JButton("发送");
JPanel bottomJPanel = new JPanel();
bottomJPanel.add(jTextField);
bottomJPanel.add(sendButton);
jFrame.add(bottomJPanel, BorderLayout.SOUTH);
/**
* 发送按钮或者回车要绑定的事件
*/
Action sendListener = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
jTextArea.append(jTextField.getText() + "\n");
jTextField.setText(null);
}
};
//发送按钮绑定事件
sendButton.addActionListener(sendListener);
/**
* 文本框输入内容绑定事件
*/
jTextField.getInputMap().put(KeyStroke.getKeyStroke('\n'),"send"); // 绑定获取到输入字符为\n即回车键,对应别名为“send"
jTextField.getActionMap().put("send",sendListener); //指定别名对应触发的监听器
/**
* jFrame位置、大小和关闭按钮设置
*/
jFrame.setLocation(400,300);
jFrame.pack();
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);;
jFrame.setVisible(true);
}
}

最新文章

  1. Azure上的几个坑
  2. Mac Sublime Text complie python .py error /bin/bash: shell_session_update: command not found
  3. char*或string转换成LPCWSTR
  4. linux 安装软件程序
  5. JavaScript中的Map
  6. OS——进程简答题(1)
  7. routing decisions based on paths, network policies, or rule-sets configured by a network administrator
  8. AOP 之 6.1 AOP基础(拾陆)
  9. 2.python的变量与赋值
  10. 【桌面虚拟化】之三 Persistent vs NonP
  11. poj2096(概率dp)
  12. Appium 测试微信小程序 Webview
  13. Gym 101908C - Pizza Cutter - [树状数组]
  14. windows 10 安装可视化mycat
  15. Spring 使用介绍(十)—— 单元测试
  16. CSS学习笔记07 盒子模型
  17. Python接口自动化【requests处理Token请求】
  18. javaweb 安全传输签名机制
  19. 兼容所有浏览器的旋转效果-IE滤镜Matrix和CSS3transform
  20. Django中contenttype的应用

热门文章

  1. javascript-初级-day02-this关键字
  2. CentOS编译openjdk
  3. Codeforces 1392H - ZS Shuffles Cards(DP+打表找规律)
  4. nginx_access_log的格式设置
  5. R shinydashboard——3.外观
  6. R语言与医学统计图形-【12】ggplot2几何对象之条图
  7. 查看nginx(Web网页服务器)状态是否正常
  8. 自动添加shell脚本头部信息
  9. android 点击图片从Fragment跳转到activity
  10. 大型前端项目 DevOps 沉思录 —— CI 篇