在swing界面中写一个键盘,使用前记得放置背景图片
import java.awt.*; import javax.swing.*; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class framebg { private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); private static JFrame frame; private static int screen_wid; private static int screen_hei; private static Container cp ; private static JTextField username = new JTextField(); private static JTextField password = new JTextField(); private static JButton[] but = new JButton[76]; public framebg() { } public static void main(String[] args) { initialize(); } private static void initialize() { frame = new JFrame(); frame.setUndecorated(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); screen_wid = (int) screenSize.getWidth(); screen_hei = (int) screenSize.getHeight(); ImageIcon img = new ImageIcon("img/login1.jpg"); JLabel imgLabel = new JLabel(img); frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE)); imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight()); cp = frame.getContentPane(); ((JPanel) cp).setOpaque(true); frame.setSize(screen_wid, screen_hei); frame.setVisible(true); JLabel titlelable = new JLabel(); ImageIcon title_icon = new ImageIcon("img/jiudao1.jpg"); titlelable.setIcon(title_icon); titlelable.setBounds(57, 118, 591, 216); cp.add(titlelable); JPanel login_panel = new JPanel(); login_panel.setOpaque(true); login_panel.setBounds(675, 118, 311, 216); login_panel.setLayout(null); username.setBounds(105, 45, 140, 29); login_panel.add(username); password.setBounds(105, 75, 140, 29); login_panel.add(password); JButton login_button = new JButton("登陆"); login_button.setFont(new Font("微软雅黑", Font.BOLD, 14)); login_button.setBounds(10, 132, 63, 36); login_button.setBackground(new Color(240,255,255)); login_panel.add(login_button); JButton exit_button = new JButton("退出"); exit_button.setFont(new Font("微软雅黑", Font.BOLD, 14)); exit_button.setBounds(97, 132, 63, 36); exit_button.setBackground(new Color(240,255,255)); login_panel.add(exit_button); JButton update_button = new JButton("更新"); update_button.setFont(new Font("微软雅黑", Font.BOLD, 14)); update_button.setBounds(182, 132, 63, 36); update_button.setBackground(new Color(46, 139, 87)); login_panel.add(update_button); cp.add(login_panel); loadkeyboard(); } private static void loadkeyboard() { JPanel panel = new JPanel(); panel.setOpaque(true); panel.setBounds(57, 359, 710, 216); panel.setLayout(null); but[0] = new JButton("`"); but[0].setBounds(5, 5, 41, 33); //but[0].setEnabled(false); panel.add(but[0]); for(int i =1;i<10;i++){ but[i] = new JButton(i+""); but[i].setBounds(49+44*(i-1), 5, 41, 33); final String text = but[i].getText(); but[i].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+text); } }); panel.add(but[i]); } but[10] = new JButton("0"); but[10].setBounds(451, 5, 41, 33); but[10].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"0"); } }); panel.add(but[10]); but[11] = new JButton("-"); but[11].setBounds(495, 5, 41, 33); but[11].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"-"); } }); panel.add(but[11]); but[12] = new JButton("+="); but[12].setBounds(541, 5, 52, 33); but[12].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"+="); } }); panel.add(but[12]); but[13] = new JButton("←Backspace"); but[13].setBounds(599, 5, 111, 33); but[13].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(username.getText()==null ||username.getText().length()<=0){ username.setText(""); }else{ username.setText(username.getText().substring(0, username. getText().length()-1)); } } }); panel.add(but[13]); but[14] = new JButton("Tab"); but[14].setBounds(5, 44, 56, 33); but[14].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[14]); but[15] = new JButton("q"); but[15].setBounds(64, 44, 44, 33); but[15].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"q"); } }); panel.add(but[15]); but[16] = new JButton("w"); but[16].setBounds(114, 44, 44, 33); but[16].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"w"); } }); panel.add(but[16]); but[17] = new JButton("e"); but[17].setBounds(161, 44, 41, 33); but[17].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"e"); } }); panel.add(but[17]); but[18] = new JButton("r"); but[18].setBounds(208, 44, 41, 33); but[18].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"r"); } }); panel.add(but[18]); but[19] = new JButton("t"); but[19].setBounds(255, 44, 41, 33); but[19].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"t"); } }); panel.add(but[19]); but[20] = new JButton("y"); but[20].setBounds(302, 44, 41, 33); but[20].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"y"); } }); panel.add(but[20]); but[21] = new JButton("u"); but[21].setBounds(349, 44, 41, 33); but[21].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"u"); } }); panel.add(but[21]); but[22] = new JButton("i"); but[22].setBounds(396, 44, 41, 33); but[22].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"i"); } }); panel.add(but[22]); but[23] = new JButton("o"); but[23].setBounds(443, 44, 42, 33); but[23].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"o"); } }); panel.add(but[23]); but[24] = new JButton("p"); but[24].setBounds(489, 44, 42, 33); but[24].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"p"); } }); panel.add(but[24]); but[25] = new JButton("["); but[25].setBounds(537, 44, 42, 33); but[25].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"["); } }); panel.add(but[25]); but[26] = new JButton("]"); but[26].setBounds(585, 44, 42, 33); but[26].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"]"); } }); panel.add(but[26]); but[27] = new JButton("\\"); but[27].setBounds(633, 44, 77, 33); but[27].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"\\"); } }); panel.add(but[27]); but[28] = new JButton("CapsLock"); but[28].setBounds(5, 83, 91, 33); but[28].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[28]); but[29] = new JButton("a"); but[29].setBounds(102, 83, 41, 33); but[29].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"a"); } }); panel.add(but[29]); but[30] = new JButton("s"); but[30].setBounds(149, 83, 41, 33); but[30].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"s"); } }); panel.add(but[30]); but[31] = new JButton("d"); but[31].setBounds(196, 83, 42, 33); but[31].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"d"); } }); panel.add(but[31]); but[32] = new JButton("f"); but[32].setBounds(243, 83, 42, 33); but[32].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"f"); } }); panel.add(but[32]); but[33] = new JButton("g"); but[33].setBounds(290, 83, 42, 33); but[33].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"g"); } }); panel.add(but[33]); but[34] = new JButton("h"); but[34].setBounds(337, 83, 42, 33); but[34].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"h"); } }); panel.add(but[34]); but[35] = new JButton("j"); but[35].setBounds(384, 83, 42, 33); but[35].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"j"); } }); panel.add(but[35]); but[36] = new JButton("k"); but[36].setBounds(431, 83, 42, 33); but[36].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"k"); } }); panel.add(but[36]); but[37] = new JButton("l"); but[37].setBounds(478, 83, 42, 33); but[37].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"l"); } }); panel.add(but[37]); but[38] = new JButton(";"); but[38].setBounds(525, 83, 42, 33); but[38].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+";"); } }); panel.add(but[38]); but[39] = new JButton("\""); but[39].setBounds(572, 83, 42, 33); but[39].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"\""); } }); panel.add(but[39]); but[40] = new JButton("Enter"); but[40].setBounds(619, 83, 91, 33); but[40].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[40]); but[41] = new JButton("Shift"); but[41].setBounds(5, 125, 67, 33); but[41].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[41]); but[42] = new JButton("z"); but[42].setBounds(78, 125, 45, 33); but[42].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"z"); } }); panel.add(but[42]); but[43] = new JButton("x"); but[43].setBounds(129, 125, 45, 33); but[43].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"x"); } }); panel.add(but[43]); but[44] = new JButton("c"); but[44].setBounds(181, 125, 45, 33); but[44].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"c"); } }); panel.add(but[44]); but[45] = new JButton("v"); but[45].setBounds(229, 125, 45, 33); but[45].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"v"); } }); panel.add(but[45]); but[46] = new JButton("b"); but[46].setBounds(279, 125, 46, 33); but[46].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"b"); } }); panel.add(but[46]); but[47] = new JButton("n"); but[47].setBounds(330, 125, 47, 33); but[47].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"n"); } }); panel.add(but[47]); but[48] = new JButton("m"); but[48].setBounds(381, 125, 48, 33); but[48].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"m"); } }); panel.add(but[48]); but[49] = new JButton(","); but[49].setBounds(432, 125, 49, 33); but[49].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+","); } }); panel.add(but[49]); but[50] = new JButton("."); but[50].setBounds(483, 125, 50, 33); but[50].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"."); } }); panel.add(but[50]); but[51] = new JButton("/"); but[51].setBounds(533, 125, 45, 33); but[51].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"/"); } }); panel.add(but[51]); but[52] = new JButton("Shift"); but[52].setBounds(581, 125, 129, 33); but[52].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[52]); but[53] = new JButton("Ctrl"); but[53].setBounds(5, 164, 67, 33); but[53].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[53]); but[54] = new JButton("Win"); but[54].setBounds(78, 164, 67, 33); but[54].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[54]); but[55] = new JButton("Alt"); but[55].setBounds(153, 164, 67, 33); but[55].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[55]); but[56] = new JButton(""); but[56].setBounds(225, 164, 329, 33); but[56].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+" "); } }); panel.add(but[56]); but[57] = new JButton("Alt"); but[57].setBounds(560, 164, 67, 33); but[57].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[57]); but[58] = new JButton("Ctrl"); but[58].setBounds(635, 164, 75, 33); but[58].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel.add(but[58]); cp.add(panel); JPanel panel_num = new JPanel(); panel_num.setOpaque(true); panel_num.setBounds(777, 359, 209, 216); panel_num.setLayout(null); cp.add(panel_num); but[59] = new JButton("Num"); but[59].setBounds(5, 5, 63, 33); but[59].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); panel_num.add(but[59]); but[60] = new JButton("/"); but[60].setBounds(74, 5, 40, 33); but[60].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"/"); } }); panel_num.add(but[60]); but[61] = new JButton("*"); but[61].setBounds(119, 5, 40, 33); but[61].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"*"); } }); panel_num.add(but[61]); but[62] = new JButton("-"); but[62].setBounds(160, 5, 43, 68); but[62].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"-"); } }); panel_num.add(but[62]); for(int i=7;i<10;i++){ but[56+i] = new JButton(i+""); but[56+i].setBounds(5+(i-7)*50, 44, 44, 33); final String text = i+""; but[56+i].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+text); } }); panel_num.add(but[56+i]); } for(int i=4;i<7;i++){ but[62+i] = new JButton(i+""); but[62+i].setBounds(5+(i-4)*50, 84, 44, 33); final String text = i+""; but[62+i].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+text); } }); panel_num.add(but[62+i]); } for(int i=1;i<4;i++){ but[68+i] = new JButton(i+""); but[68+i].setBounds(5+(i-1)*50, 124, 44, 33); final String text = i+""; but[68+i].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+text); } }); panel_num.add(but[68+i]); } but[72] = new JButton("+"); but[72].setBounds(160, 84, 43, 72); but[72].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"+"); } }); panel_num.add(but[72]); but[73] = new JButton("0"); but[73].setBounds(5, 162, 60, 33); but[73].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"0"); } }); panel_num.add(but[73]); but[74] = new JButton("."); but[74].setBounds(72, 162, 44, 33); but[74].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"."); } }); panel_num.add(but[74]); but[75] = new JButton("Enter"); but[75].setBounds(122, 162, 81, 33); but[75].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { username.setText(username.getText()+"Enter"); } }); panel_num.add(but[75]); JPanel panel_ka = new JPanel(); panel_ka.setOpaque(true); panel_ka.setBounds(57, 359, 710, 216); panel_ka.setLayout(null); cp.add(panel_ka); } }
发表评论
-
文件上传 下载 解析 相对路径
2014-12-16 16:29 2104有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着, ... -
发送邮件
2014-10-15 11:29 667import org.apache.commons.m ... -
Enum用法
2014-08-06 10:27 811以前的时候知道enum,但 ... -
红黑树
2014-07-24 13:51 627红黑树 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的 ... -
Java中的instanceof关键字
2014-07-21 11:14 443Java中的instanceof关键字 [size=larg ... -
Comparable接口
2014-07-21 11:01 500因为在学红黑树的时候用到了Comparable接口,故此学习一 ... -
二叉查找树
2014-07-15 10:57 605二叉排序树(Binary Sort Tree)又称二叉查找树( ... -
二叉树的三种遍历
2014-07-10 11:28 611前序遍历(DLR) 前序 ... -
Java中如何写代码实现无标题无边框的窗体能够用鼠标拖动改变窗口大小
2014-01-23 17:16 1561import java.awt.*; import java ... -
Swing基础
2014-01-10 10:22 421JFrame: frame = new JFrame(); ... -
游戏音效素材大全下载 - 3000首高清无损-按分类整理
2014-01-09 18:03 487因为我看到国外很多素材,但是国内不多,我希望来做好这个事情。 ... -
JAVA的Socket的聊天器
2014-01-09 11:06 471这是刚开始学习java网络编程的时候做的一个东东,,局域网聊天 ... -
驱动打印
2013-12-27 15:16 654java驱动打印代码: PrintTest.print(pr ... -
java程序打包
2013-12-27 15:17 522打包一般分为两种,一种是B/S架构打包,一种是C/S打包,大同 ... -
读取文件夹下的所有文件
2013-12-20 13:19 474文章来源:http://www.blogjava.net/ba ... -
实现天气预报功能
2013-12-02 10:30 563import java.io.BufferedReader; ... -
JMF播放AVI格式的视频
2013-12-02 10:26 742public class Conver { publ ... -
JMF视频播放器
2013-12-02 10:24 1139import java.awt.BorderLayout; ...
相关推荐
在这个"学生练习——Java Swing开发的小计算器"项目中,学生利用Swing库创建了一个简易的计算器程序,用于执行基本的数学运算,如加、减、乘、除等。 Swing库提供了大量的组件,如JButton、JLabel、JTextField等,...
在本资源中,我们主要探讨的是...总的来说,通过学习这个GUI+Swing+计算器的练习,开发者不仅可以掌握Swing的基本用法,还能了解到事件处理机制和简单的计算逻辑实现。这对于提升Java桌面应用开发能力是非常有帮助的。
在本文中,我们将深入探讨如何使用Java Swing库创建一个经典的贪食蛇小游戏。这个项目不仅是一个有趣的学习实践,而且...这是一个很好的起点,对于任何想要提升Java编程技能的初学者来说,都是一个既实用又有趣的练习。
在这个验证码练习工具中,开发者可能利用了Swing库来构建交互式的窗口界面,用户可以在该界面上看到并输入验证码。Swing提供了丰富的组件,如JFrame、JLabel、JButton等,使得开发者能够轻松地构建出复杂的UI。 2. ...
在“javaupload”这个压缩包文件中,可能包含了Swing的相关教程、示例代码、练习项目等内容,用于帮助初学者快速掌握Swing的基本用法和高级特性。通过学习这些资料,开发者能够熟练运用Swing构建功能丰富的Java桌面...
- **实践**: 结合实际项目,尝试构建一些简单的Swing应用,不断练习以加深理解和熟练度。 通过以上知识点的详细介绍,希望能够帮助初学者更好地理解和掌握Swing框架,为进一步学习和开发Java桌面应用程序奠定坚实的...
在Java的Swing库中创建一个贪吃蛇游戏是一个经典的编程练习,它涵盖了图形用户界面(GUI)设计、事件处理、多线程以及基本的游戏逻辑等多个知识点。下面将详细讲解如何利用Swing来实现这个项目。 首先,我们需要...
总的来说,这个“javaswing 打飞机小游戏”项目是一个很好的实践案例,可以帮助开发者熟悉Java Swing的基本用法,理解事件处理、图形绘制和游戏循环等概念,对于初学者来说是一个有价值的编程练习。
4. **控制逻辑**:这部分代码处理用户的输入,如键盘事件,将用户的操作转化为游戏内部的状态变化。 5. **更新界面**:每当游戏状态改变时,都需要更新界面以反映新的棋盘状态。 6. **素材**:提供的"2048导出的...
在Java编程领域,开发一款基于键盘输入的练习程序是一个常见的学习和锻炼技能的方式。这个"Java键盘空格键练习程序代码"提供了一个独特的实践环境,尤其是对于初学者来说,它可以帮助提升对键盘输入处理和游戏编程的...
6. **基本GUI程序设计**:创建一个简单的Swing应用,例如上述的“文本框和标签的练习”,通常涉及创建组件、设置布局、添加监听器和响应事件。在提供的代码示例中,程序创建了一个标签、一个文本框和一个按钮,当...
3. **事件处理**:使用KeyListener或者ActionListener监听键盘输入,根据用户的按键移动蛇的方向。同时,游戏需要定时更新,可以使用javax.swing.Timer类来实现。 4. **逻辑处理**:管理蛇的状态,包括其位置、长度...
总结来说,这个Java编写的贪吃蛇游戏项目不仅涵盖了基本的Java编程知识,如类和对象、事件处理,还涉及到了Swing库的使用,对于初学者而言,是练习编程技巧和理解面向对象设计的好例子。通过实际操作,可以深入理解...
此外,Swing还支持键盘、鼠标和其他类型的事件处理。 四、高级特性 Swing提供了一些高级特性,如模型-视图-控制器(MVC)架构、可定制的外观(LookAndFeel)和轻量级组件。LookAndFeel允许开发者改变整个应用程序...
Swing提供了键盘和鼠标事件的处理,使得游戏可以根据用户的键盘或鼠标操作做出反应。例如,玩家可以通过键盘控制飞机的上下左右移动,点击鼠标发射子弹。 10. **测试与调试**: 为了确保游戏的稳定性和性能,...
Java Swing 是Java GUI库,用于构建桌面应用程序。在这个项目中,开发者使用Swing来实现了一个经典的贪吃蛇游戏,而没有使用...对于初学者,这是一个很好的练习项目,可以学习到Swing的基础和游戏开发的一些基本概念。
3. **事件处理**:学习如何注册事件监听器,处理如动作事件(ActionEvent)、鼠标事件(MouseEvent)和键盘事件(KeyEvent)等。 4. **对话框**:了解如何使用JOptionPane创建警告对话框、确认对话框和输入对话框,...
在指法练习小游戏中,事件监听器将捕捉用户的键盘操作事件,当用户正确或错误地敲击指定的字母按键时,程序会根据事件触发相应的逻辑,更新分数或执行其他游戏动作。Java Swing中事件处理通常通过实现ActionListener...
4. **KeyListener**: 游戏需要监听用户的键盘输入,如左右移动、旋转和下落,所以会使用KeyListener来处理这些事件。不过,Swing推荐使用ActionListener和InputMap/ActionMap组合,因为KeyListener可能会遇到事件...