import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test extends JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private JLabel jl = new JLabel("java程序设计");
private static final int STEP = 10;//设置移动的幅度
public static void main(String[] args) {
new Test().launchFrame();
}
public void launchFrame() {
this.add(jl);
this.addKeyListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
public void keyPressed(KeyEvent e) {//按一个键,可以连续按
key(e);
public void keyReleased(KeyEvent e) {//按下放开一个键
public void keyTyped(KeyEvent e) {//击一下键
public void key(KeyEvent e) {//可以将这个函数添加到上面的三个方法里
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT ://左箭头
jl.setLocation(jl.getLocation().x - STEP, jl.getLocation().y);
break;
case KeyEvent.VK_RIGHT ://右箭头
jl.setLocation(jl.getLocation().x + STEP, jl.getLocation().y);
case KeyEvent.VK_UP ://上箭头
jl.setLocation(jl.getLocation().x, jl.getLocation().y - STEP);
case KeyEvent.VK_DOWN ://下箭头
jl.setLocation(jl.getLocation().x, jl.getLocation().y + STEP);
另外提醒一下楼上的,应该给JFrame添加KeyListener
赞一个, 提前学习, 做好预先 , 是个好习惯.
java图形界面主要有AWT, SWING, SWT, JavaFx等技术
JButton ?(按钮)是SWING里面很常用的组件. 直接添加按钮到窗口,并不会产生任何交互效果.
要想产生交互效果,就需要了解awt,swing的事件处理机制:
事件:用户对组件的一个操作,称之为一个事件;
事件源:发生事件的组件就是事件源;
事件处理器:负责处理事件的方法;
常用的事件(Event) 有:
鼠标事件(MouseEvent:?鼠标按下,移入,移除,滚轮..)
键盘事件(KeyEvent:?键盘按下,释放..)
按钮添加接收器, 不同的事件,接收器不同.
比如ActionEvent 那么他的接收器是ActionListener
KeyEvent 那么他的接收器就是KeyListener
基础知识,大概就是这些.
所以想要JButton产生交互,你就需要给他添加事件处理器,当发生这些事件时,出发该处理器,进行处理.
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?ButtonDemo?extends?JFrame?{
public?ButtonDemo()?{
JButton?jbHello?=?new?JButton("Hello");//按钮
jbHello.addActionListener(new?ActionListener()?{//给按钮添加事件接收器
public?void?actionPerformed(ActionEvent?e)?{//接受到事件后,进行下面的处理
System.out.println("Hello?World");//?控制台打印输出
JOptionPane.showMessageDialog(null,?"Hello?World");//?弹出对话框,显示Hello?World
});
add(jbHello);//把按钮添加到窗体
//?窗体属性的设置
setLayout(new?FlowLayout());//?窗体流式布局,?按添加顺序从左到右排列组件
setLocationRelativeTo(null);//?窗体放在显示器中间
setTitle("HelloWord");//?窗体的标题
setVisible(true);//?窗体可见
public?static?void?main(String[]?args)?{
new?ButtonDemo();
看明白了吧, addActionListener是关键
进阶版 :加法计算器.? 代码稍微长一点,.但注释很多
参考代码如下
//AddFrame继承自JFrame类,?并且实现了ActionListener?接口
public?class?AddFrame?extends?JFrame?implements?ActionListener?{
//?组件
JButton?jbClear;//?按钮,?用于,清空数字
public?AddFrame()?{//?构造方法
//?初始化组件
JLabel?jl?=?new?JLabel("+");//文字标签
jbAdd?=?new?JButton("=");
jbAdd.addActionListener(this);//因为本类已经实现了ActionListener接口,所以添加事件的接收器就是自己(this)
jbClear?=?new?JButton("清除");
jbClear.addActionListener(this);
//把组件,添加到窗体
add(jtf1);
add(jl);
add(jbAdd);
add(jbClear);
setLayout(new?FlowLayout());//窗体流式布局,?按添加顺序从左到右排列组件
setTitle("加法计算器");//?窗体的标题
/*
*?实现ActionListener接口?就必须重写actionPerformed方法
*/
public?void?actionPerformed(ActionEvent?e)?{//?当事件产生后,就会执行actionPerformed里的方法
JButton?jbTemp=?(JButton)?e.getSource();//得到事件源
if(jbTemp==jbAdd)?{//如果是从jbAdd产生的事件.那么执行加法操作
//因为是简单案例,就不判断和处理,用户乱输入字母汉字等情况,导致的异常了
int?x?=?Integer.parseInt(jtf1.getText());//从文本框1得到字符串,并转化成数字
}else?if(jbTemp==jbClear)?{//如果事件源是?jbClear,那么清除文本框的文字
jtf1.setText("");
//?main方法
new?AddFrame();//创建一个AddFrame的实例
代码我是懒得写!提示关键词 addMouseListener
void mousePressed(MouseEvent e) 鼠标按键在组件上按下时调用.
void mouseReleased(MouseEvent e) 鼠标按钮在组件上释放时调用.
你写错事件了,是实现keylistener事件不是继承那个adapter类
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Test
{
JTextFieldtext1;
public Test()
JFrame frame = new JFrame();
Container contain = frame.getContentPane();
text1 = new JTextField(10);
MyKeyEvent e = new MyKeyEvent();
text1.addKeyListener(e);
contain.setLayout(new FlowLayout());
contain.add(text1);
text1.setFocusable(true);
frame.pack();
frame.setVisible(true);
class MyKeyEvent implements KeyListener
@Override
public void keyTyped(KeyEvent e)
public void keyPressed(KeyEvent e)
public void keyReleased(KeyEvent e)
System.out.println(e.getKeyChar());
public static void main(String args[])
Test test = new Test();
KeyListener
java.awt.event
接口 KeyListener
所有超级接口:
EventListener
所有已知实现类:
AWTEventMulticaster, BasicComboBoxUI.KeyHandler, BasicComboPopup.InvocationKeyHandler, BasicTableUI.KeyHandler, BasicTreeUI.KeyHandler, KeyAdapter
public interface KeyListener
extends EventListener
用于接收键盘事件(击键)的侦听器接口.旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法).
然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册.按下、释放或键入键时生成键盘事件.然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它.
从以下版本开始:
另请参见:
KeyAdapter, KeyEvent, Tutorial: Writing a Key Listener
方法摘要
void keyPressed(KeyEvent e)
按下某个键时调用此方法.
void keyReleased(KeyEvent e)
释放某个键时调用此方法.
void keyTyped(KeyEvent e)
键入某个键时调用此方法.
具体哪个键...
用参数KeyEvent可以判断是按的哪个键
以上就是土嘎嘎小编为大家整理的键盘按下释放java代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!