`

java swing里怎样按键监听一个JPanel和一个JPanel里面的JTextField

阅读更多
你可以把一个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漂亮界面(超酷) javaswing教程

    Java Swing 是Java编程语言中用于构建桌面应用程序用户界面的一个库,它是Java Foundation Classes (JFC) 的一部分。Swing 提供了一系列组件,如按钮、文本框、菜单等,用于创建功能丰富的图形用户界面(GUI)。在...

    java swing漂亮界面 超酷 javaswing教程

    Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于帮助开发者创建桌面应用程序。Swing提供了一系列组件,如按钮、文本框、菜单等,允许开发者构建功能...

    java swing 多功能 聊天室

    Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC) 的一部分。在本项目“java swing 多功能 聊天室”中,开发者利用Swing构建了一个具备多种功能的聊天应用,包括...

    Java swing编写的计算器界面.zip

    Java Swing 是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在Java Swing中,你可以创建丰富的桌面应用程序,包括我们熟悉的计算器界面。本压缩包"Java swing编写的...

    java Swing 文件批量上传 DEMO 源代码

    在这个"java Swing 文件批量上传 DEMO 源代码"中,我们关注的核心是利用Swing构建一个用户界面,实现文件和文件夹的批量上传功能。这涉及到多个Java Swing组件、事件处理以及文件I/O操作。 首先,Swing 提供了诸如...

    Java swing 计算器。

    Java Swing计算器是一个基于Java GUI库Swing开发的桌面应用程序,用于执行基本的数学运算。Swing是Java标准版(Java SE)的一部分,提供了一组组件和工具,用于创建丰富的图形用户界面(GUI)。这个计算器项目可能...

    java swing漂亮软件界面 超酷 以及javaswing教程.rar.rar

    Java Swing 是Java编程语言中用于构建桌面应用程序用户界面的一个库,它是Java Foundation Classes (JFC) 的一部分。Swing 提供了丰富的组件集合,可以创建功能完备、交互性强且自定义程度高的图形用户界面(GUI)。...

    JavaSwing图书管理系统SQL server数据库

    JavaSwing图书管理系统结合SQL Server数据库是一个典型的桌面应用开发实例,它主要展示了如何利用Java的Swing库构建用户界面,并与关系型数据库SQL Server进行数据交互。在这个系统中,教师或管理员可以进行图书的...

    java swing 编程 模拟聊天室

    在Java Swing中,我们可以使用JFrame、JPanel、JLabel、JButton、JTextField和JTextArea等组件来构建UI。客户端需要能够输入昵称、IP地址和端口号,然后与服务端建立Socket连接。连接成功后,客户端将进入聊天界面,...

    java swing 增删改查

    在这个"java swing 增删改查"的小项目中,我们可以推测开发者利用Swing 创建了一个简单的数据库操作应用,允许用户对数据进行添加、删除、修改和查询。 在Java Swing中,主要涉及以下几个核心知识点: 1. **容器与...

    90个java-swing基础例子.zip

    1. **Swing组件**:Swing 提供了许多组件,如按钮(JButton),文本框(JTextField),标签(JLabel),面板(JPanel),滚动窗格(JScrollPane),列表(JList),表格(JTable),树(JTree)等。这些组件是构建用户界面的基本单元...

    java swing管理系统源码 程序 代码 图形界面(11套).zip

    Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本压缩包包含了11套完整的Java Swing管理系统源码,这些源码对于学习和理解Java GUI...

    java swing简单版qq

    在这个“java swing简单版qq”项目中,开发者利用Swing构建了一个基础的即时通讯应用,模拟了QQ的基本功能,如聊天和更换皮肤。下面我们将深入探讨Java Swing以及如何使用它来实现这样的应用程序。 首先,Swing是...

    java swing 学习资料

    Swing 包含了各种组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)、滚动窗格(JScrollPane)、菜单(JMenu)等。这些组件可以用来构建复杂的用户界面,并通过事件监听来处理用户的交互行为。...

    JAVA Swing实例讲解.zip

    JAVA Swing 是Java编程语言中用于构建桌面应用用户界面的一个图形组件库。它是Java Foundation Classes (JFC)的一部分,提供了一套丰富的组件,如按钮、文本框、滚动面板、菜单等,使得开发者能够创建出功能齐全且...

    java swing socket聊天

    这个简单的Java Swing Socket聊天应用虽然基础,但它涵盖了Java GUI编程和网络通信的基本原理,是学习这两方面技术的一个良好起点。通过不断完善和优化,可以构建更复杂的多用户聊天室或者支持文件传输等功能。

    java swing模拟键盘

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在Java Swing中模拟键盘的功能,主要是为了在没有物理键盘的设备上,如触摸屏设备,提供输入文本的方式。例如...

    JavaSwing小程序

    Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing 提供了一系列组件,如按钮、文本框、菜单等,使得开发者能够创建功能丰富的、...

    java swing界面设计

    Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。本教程将引导初学者深入理解Java Swing,帮助他们快速掌握界面设计的基础知识。 1. **...

Global site tag (gtag.js) - Google Analytics