java keyadapter_KeyAdapter

KeyAdapter

介绍 (Introduction)

KeyAdapter类是一个用于接收键盘事件的抽象(适配器)类。 此类的所有方法都是空的。 此类是用于创建侦听器对象的便捷类。

Class 声明 (Class Declaration)

以下是java.awt.event.KeyAdapter类的声明 -public abstract class KeyAdapter

extends Object

implements KeyListener

类构造函数 (Class Constructors)Sr.No.构造函数和描述

1KeyAdapter()

Class MethodsSr.No.方法和描述

1void keyPressed(KeyEvent e)

按下某个键时调用。

2void keyReleased(KeyEvent e)

释放密钥时调用。

3void keyTyped(KeyEvent e)

键入键时调用。

方法继承 (Methods Inherited)

该类继承以下类中的方法 -java.lang.Object

KeyAdapter示例

使用您选择的任何编辑器创建以下Java程序,例如D:/ 》 SWING 》 com 》 iowiki 》 gui 》

SwingAdapterDemo.java package com.iowiki.gui;

import java.awt.*;

import java.awt.event.*;

public class SwingAdapterDemo {

private JFrame mainFrame;

private JLabel headerLabel;

private JLabel statusLabel;

private JPanel controlPanel;

public SwingAdapterDemo(){

prepareGUI();

}

public static void main(String[] args){

SwingAdapterDemo swingAdapterDemo = new SwingAdapterDemo();

swingAdapterDemo.showKeyAdapterDemo();

}

private void prepareGUI(){

mainFrame = new JFrame("Java SWING Examples");

mainFrame.setSize(400,400);

mainFrame.setLayout(new GridLayout(3, 1));

headerLabel = new JLabel("",JLabel.CENTER );

statusLabel = new JLabel("",JLabel.CENTER);

statusLabel.setSize(350,100);

mainFrame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent windowEvent){

System.exit(0);

}

});

controlPanel = new JPanel();

controlPanel.setLayout(new FlowLayout());

mainFrame.add(headerLabel);

mainFrame.add(controlPanel);

mainFrame.add(statusLabel);

mainFrame.setVisible(true);

}

private void showKeyAdapterDemo(){

headerLabel.setText("Listener in action: KeyAdapter");

final JTextField textField = new JTextField(10);

textField.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

if(e.getKeyCode() == KeyEvent.VK_ENTER){

statusLabel.setText("Entered text: "+ textField.getText());

}

}

});

JButton okButton = new JButton("OK");

okButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

statusLabel.setText("Entered text: "+ textField.getText());

}

});

controlPanel.add(textField);

controlPanel.add(okButton);

mainFrame.setVisible(true);

}

}

使用命令提示符编译程序。 转到D:/ 》 SWING并键入以下命令。D:\SWING>javac com\iowiki\gui\SwingAdapterDemo.java

如果没有错误发生,则表示编译成功。 使用以下命令运行该程序。D:\SWING>java com.iowiki.gui.SwingAdapterDemo

验证以下输出。

dbd5fb88c75c272b0261b46c9ed63871.png

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Java双人贪吃蛇游戏的代码示例: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SnakeGame extends JFrame { private final int B_WIDTH = 300; private final int B_HEIGHT = 300; private final int DOT_SIZE = 10; private final int ALL_DOTS = 900; private final int RAND_POS = 29; private int DELAY = 140; private final int x[] = new int[ALL_DOTS]; private final int y[] = new int[ALL_DOTS]; private int dots; private int apple_x; private int apple_y; private boolean leftDirection = false; private boolean rightDirection = true; private boolean upDirection = false; private boolean downDirection = false; private boolean inGame = true; private Timer timer; private Image ball; private Image apple; private Image head; private int player1Score = 0; private int player2Score = 0; private boolean player1Turn = true; public SnakeGame() { initGame(); } private void initGame() { addKeyListener(new TAdapter()); setBackground(Color.black); setFocusable(true); setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT)); loadImages(); initGameBoard(); } private void loadImages() { ImageIcon iid = new ImageIcon("dot.png"); ball = iid.getImage(); ImageIcon iia = new ImageIcon("apple.png"); apple = iia.getImage(); ImageIcon iih = new ImageIcon("head.png"); head = iih.getImage(); } private void initGameBoard() { dots = 3; for (int z = 0; z < dots; z++) { x[z] = 50 - z * 10; y[z] = 50; } locateApple(); timer = new Timer(DELAY, new GameCycle()); timer.start(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); doDrawing(g); } private void doDrawing(Graphics g) { if (inGame) { g.drawImage(apple, apple_x, apple_y, this); for (int z = 0; z < dots; z++) { if (z == 0) { g.drawImage(head, x[z], y[z], this); } else { g.drawImage(ball, x[z], y[z], this); } } Toolkit.getDefaultToolkit().sync(); } else { gameOver(g); } } private void gameOver(Graphics g) { String msg = "Game Over!"; String msg2 = "Player 1 Score: " + player1Score + " Player 2 Score: " + player2Score; Font small = new Font("Helvetica", Font.BOLD, 14); FontMetrics metr = getFontMetrics(small); g.setColor(Color.white); g.setFont(small); g.drawString(msg, (B_WIDTH - metr.stringWidth(msg)) / 2, B_HEIGHT / 2); g.drawString(msg2, (B_WIDTH - metr.stringWidth(msg2)) / 2, (B_HEIGHT / 2) + 20); } private void checkApple() { if ((x[0] == apple_x) && (y[0] == apple_y)) { dots++; locateApple(); if (player1Turn) { player1Score++; } else { player2Score++; } } } private void move() { for (int z = dots; z > 0; z--) { x[z] = x[(z - 1)]; y[z] = y[(z - 1)]; } if (leftDirection) { x[0] -= DOT_SIZE; } if (rightDirection) { x[0] += DOT_SIZE; } if (upDirection) { y[0] -= DOT_SIZE; } if (downDirection) { y[0] += DOT_SIZE; } } private void checkCollision() { for (int z = dots; z > 0; z--) { if ((z > 4) && (x[0] == x[z]) && (y[0] == y[z])) { inGame = false; } } if (y[0] >= B_HEIGHT) { inGame = false; } if (y[0] < 0) { inGame = false; } if (x[0] >= B_WIDTH) { inGame = false; } if (x[0] < 0) { inGame = false; } if(!inGame) { timer.stop(); } } private void locateApple() { int r = (int) (Math.random() * RAND_POS); apple_x = ((r * DOT_SIZE)); r = (int) (Math.random() * RAND_POS); apple_y = ((r * DOT_SIZE)); } private class TAdapter extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_LEFT && !rightDirection) { leftDirection = true; upDirection = false; downDirection = false; } if (key == KeyEvent.VK_RIGHT && !leftDirection) { rightDirection = true; upDirection = false; downDirection = false; } if (key == KeyEvent.VK_UP && !downDirection) { upDirection = true; rightDirection = false; leftDirection = false; } if (key == KeyEvent.VK_DOWN && !upDirection) { downDirection = true; rightDirection = false; leftDirection = false; } } } private class GameCycle implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if (inGame) { checkApple(); checkCollision(); move(); if (player1Turn) { player1Turn = false; } else { player1Turn = true; } } repaint(); } } public static void main(String[] args) { EventQueue.invokeLater(() -> { JFrame ex = new SnakeGame(); ex.setVisible(true); }); } } ``` 这个示例代码使用了Java Swing库来创建游戏窗口和图形界面,同时实现了基本的游戏逻辑和双人模式。你可以根据自己的需求对代码进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值