栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在JFrame中使用KeyListener?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在JFrame中使用KeyListener?

矩形没有移动,因为使用不

Jframe
正确。您必须分配
frame
new mainframe()
而不是忽略实例化的
mainframe
对象。

@MadProgrammer指出了其他一些问题。

这是修复某些问题的代码:

mainframe.java

import java.awt.*;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.Jframe;public class mainframe extends Jframe implements KeyListener{    private mainDraw draw;    public void keyPressed(KeyEvent e) {        System.out.println("keyPressed");    }    public void keyReleased(KeyEvent e) {        if(e.getKeyCode()== KeyEvent.VK_RIGHT) draw.moveRight();        else if(e.getKeyCode()== KeyEvent.VK_LEFT) draw.moveLeft();        else if(e.getKeyCode()== KeyEvent.VK_DOWN) draw.moveDown();        else if(e.getKeyCode()== KeyEvent.VK_UP) draw.moveUp();    }    public void keyTyped(KeyEvent e) {        System.out.println("keyTyped");    }    public mainframe(){        this.draw=new mainDraw();        addKeyListener(this);        setFocusable(true);        setFocusTraversalKeysEnabled(false);    }    public static void main(String[] args) {        javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() {     mainframe frame = new mainframe();     frame.setTitle("Square Move Practice");     frame.setResizable(false);     frame.setSize(600, 600);     frame.setMinimumSize(new Dimension(600, 600));     frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);     frame.getContentPane().add(frame.draw);     frame.pack();     frame.setVisible(true); }        });    }}

mainDraw.java

import java.awt.Color;import java.awt.Graphics;import javax.swing.JComponent;public class mainDraw extends JComponent {    public int x = 50;    public int y = 50;    public void paintComponent(Graphics g) {        super.paintComponent(g);        g.drawRect(x, y, 50, 50);        g.fillRect(x, y, 50, 50);        g.setColor(Color.BLACK);    }    public void moveRight() {        x = x + 5;        repaint();    }    public void moveLeft() {        x = x - 5;        repaint();    }    public void moveDown() {        y = y + 5;        repaint();    }    public void moveUp() {        y = y - 5;        repaint();    }}

顺便说一句,用于

SwingUtilities
放置gui更新代码,因为swing对象不是线程安全的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号