你可以把一个Key事件同时添加给多个组件。
例:
import java.awt.BorderLayout;
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.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* 一个简单的Key事件实例
* @author 米强
*
*/
public class Test extends JFrame {
private JLabel label = null;
private JPanel pane = null;
public Test() {
label = new JLabel("显示按下的键值(Char)", JLabel.CENTER);
pane = new JPanel();
JTextField text = new JTextField(20);
// Key事件
KeyListener key = new MyKey();
// 将Key事件同时添加给JPanel和JTextFieil组件
pane.addKeyListener(key);
text.addKeyListener(key);
JButton button = new JButton("使JPanel面板获得焦点");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 使JPanel获得焦点,但从表面看不出来
pane.requestFocus();
}
});
pane.add(text);
pane.add(button);
getContentPane().add(pane);
getContentPane().add(label, BorderLayout.NORTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new Test();
}
/**
* 自己写的Key事件
* @author 米强
*
*/
class MyKey implements KeyListener {
public void keyPressed(KeyEvent e) {
label.setText(String.valueOf(e.getKeyChar()));
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}
}
import javax.swing.*;
import java.awt.event.*;
public class TestFrame {
public static void main(String[] args) {
MyTestFrame myframe=new MyTestFrame();
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myframe.setVisible(true);
}
}
class MyTestFrame extends JFrame {
MyTestFrame(){
JButton button=new JButton("test");
MyTestPanel mytestpanel=new MyTestPanel();
mytestpanel.add(button);
add(mytestpanel);
addKeyListener(mytestpanel);
}
}
class MyTestPanel extends JPanel implements KeyListener{
MyTestPanel(){
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_DOWN){
System.out.println("向下");
}
else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
System.out.println("向右");
}
else if(e.getKeyCode()==KeyEvent.VK_LEFT){
System.out.println("向左");
}
else if(e.getKeyCode()==KeyEvent.VK_UP){
System.out.println("向上");
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}
这个测试的目的就是为了实现当按下方向键时,控制台输出。在没有添加按钮的时候可以做出响应,添加按钮后无法响应,我能想到的是焦点,我是在Panel中写的响应方法也可以将响应方法写在Frame中。我查看了JDK API文档,JPanel和JFrame都有焦点获取的方法,但是不知道添加在程序的什么位置才有用。
我要实现的功能是,在GUI上有其他组件的情况下,写在Frame或者Panel中的键盘响应方法能响应键盘事件,也可以给出你的实现此功能的想法。如果有类似的实例,最好。
分享到:
相关推荐
Java Swing 是Java编程语言中用于构建桌面应用程序用户界面的一个库,它是Java Foundation Classes (JFC) 的一部分。Swing 提供了一系列组件,如按钮、文本框、菜单等,用于创建功能丰富的图形用户界面(GUI)。在...
Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于帮助开发者创建桌面应用程序。Swing提供了一系列组件,如按钮、文本框、菜单等,允许开发者构建功能...
Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC) 的一部分。在本项目“java swing 多功能 聊天室”中,开发者利用Swing构建了一个具备多种功能的聊天应用,包括...
Java Swing 是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在Java Swing中,你可以创建丰富的桌面应用程序,包括我们熟悉的计算器界面。本压缩包"Java swing编写的...
在这个"java Swing 文件批量上传 DEMO 源代码"中,我们关注的核心是利用Swing构建一个用户界面,实现文件和文件夹的批量上传功能。这涉及到多个Java Swing组件、事件处理以及文件I/O操作。 首先,Swing 提供了诸如...
Java Swing计算器是一个基于Java GUI库Swing开发的桌面应用程序,用于执行基本的数学运算。Swing是Java标准版(Java SE)的一部分,提供了一组组件和工具,用于创建丰富的图形用户界面(GUI)。这个计算器项目可能...
Java Swing 是Java编程语言中用于构建桌面应用程序用户界面的一个库,它是Java Foundation Classes (JFC) 的一部分。Swing 提供了丰富的组件集合,可以创建功能完备、交互性强且自定义程度高的图形用户界面(GUI)。...
JavaSwing图书管理系统结合SQL Server数据库是一个典型的桌面应用开发实例,它主要展示了如何利用Java的Swing库构建用户界面,并与关系型数据库SQL Server进行数据交互。在这个系统中,教师或管理员可以进行图书的...
在Java Swing中,我们可以使用JFrame、JPanel、JLabel、JButton、JTextField和JTextArea等组件来构建UI。客户端需要能够输入昵称、IP地址和端口号,然后与服务端建立Socket连接。连接成功后,客户端将进入聊天界面,...
在这个"java swing 增删改查"的小项目中,我们可以推测开发者利用Swing 创建了一个简单的数据库操作应用,允许用户对数据进行添加、删除、修改和查询。 在Java Swing中,主要涉及以下几个核心知识点: 1. **容器与...
1. **Swing组件**:Swing 提供了许多组件,如按钮(JButton),文本框(JTextField),标签(JLabel),面板(JPanel),滚动窗格(JScrollPane),列表(JList),表格(JTable),树(JTree)等。这些组件是构建用户界面的基本单元...
Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本压缩包包含了11套完整的Java Swing管理系统源码,这些源码对于学习和理解Java GUI...
在这个“java swing简单版qq”项目中,开发者利用Swing构建了一个基础的即时通讯应用,模拟了QQ的基本功能,如聊天和更换皮肤。下面我们将深入探讨Java Swing以及如何使用它来实现这样的应用程序。 首先,Swing是...
Swing 包含了各种组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)、滚动窗格(JScrollPane)、菜单(JMenu)等。这些组件可以用来构建复杂的用户界面,并通过事件监听来处理用户的交互行为。...
JAVA Swing 是Java编程语言中用于构建桌面应用用户界面的一个图形组件库。它是Java Foundation Classes (JFC)的一部分,提供了一套丰富的组件,如按钮、文本框、滚动面板、菜单等,使得开发者能够创建出功能齐全且...
这个简单的Java Swing Socket聊天应用虽然基础,但它涵盖了Java GUI编程和网络通信的基本原理,是学习这两方面技术的一个良好起点。通过不断完善和优化,可以构建更复杂的多用户聊天室或者支持文件传输等功能。
Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在Java Swing中模拟键盘的功能,主要是为了在没有物理键盘的设备上,如触摸屏设备,提供输入文本的方式。例如...
Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing 提供了一系列组件,如按钮、文本框、菜单等,使得开发者能够创建功能丰富的、...
Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。本教程将引导初学者深入理解Java Swing,帮助他们快速掌握界面设计的基础知识。 1. **...