📄 keylistenerdemo.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.JPanel;
public class KeyListenerDemo extends JFrame implements KeyListener
{
MainFrame mainframe;
BorderLayout borderLayout1 = new BorderLayout();
private ImagePanel imagePanel; //绘制图像的面板
//声明布尔型变量v1、v2、v3,用来控制哪个杆被选择,值为true的,对应序号的杆被选
boolean v1 = true,v2 = false,v3 = false,v4 = false,v5 = false;
private ImageIcon images;
//帮助信息Dialog窗口对象声明
帮助信息 dialog;
最佳排行 dialog1;
MultiMidiDemo mult;
public KeyListenerDemo()
{
//获取内容面板
Container container = getContentPane();
//创建帮助信息Dialog窗口对象
dialog = new 帮助信息();
dialog1=new 最佳排行();
//创建用于绘制图像的面板
imagePanel = new ImagePanel();
images= new ImageIcon("img0029.jpg");
mult=new MultiMidiDemo();
mainframe=new MainFrame();
container.add(imagePanel, BorderLayout.CENTER);
addKeyListener(this); //添加键盘事件监听器
//this.setSize(400,400);
this.setBounds(150,150,400,400); //设置窗口大小
//this.setVisible(true); //设置窗口为可见 addKeyListener(this);
}
class ImagePanel extends JPanel
{
public ImagePanel()
{
super();
setBackground(Color.WHITE);
}
}
public void paint(Graphics g)
{
//获取Graphics2D对象g_2d,从而进行2D画图
Graphics2D g_2d = (Graphics2D)g;
g_2d.setColor(getBackground());
g_2d.fillRect(0, 0, getWidth(), getHeight());
//绘制图像,坐标为屏幕中心
int x = (this.getWidth() - images.getIconWidth())/2;
int y = (this.getHeight() - images.getIconHeight())/2;
images.paintIcon(this, g, x, y);
//用白色清屏
// g_2d.setColor(Color.WHITE);
// g_2d.clearRect(0,0,400,500);
//游戏界面中,设置说明性文字的字体、颜色、位置及内容
BasicStroke bs2 = new BasicStroke(7f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
Font f=new Font("Dialog",Font.BOLD,20);
g_2d.setFont(f);
g_2d.setStroke(bs2);
g_2d.setColor(Color.BLUE);
g_2d.drawString("光标<上><下>键选择,<回车>键确定",50,80);
//柱1(最左边杆上)被选定画图
if(v1 == true)
{
//用红色画出直线,表示被选中杆
g_2d.setColor(Color.RED);
g_2d.drawString("开始游戏",100,130);
//用绿色画出未选择关
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("游戏说明",100,230);
g_2d.drawString("音效设置",100,280);
g_2d.drawString("离开游戏",100,330);
}
else if(v2==true)
{
//用红色画出直线,表示被选中杆
g_2d.setColor(Color.RED);
g_2d.drawString("最佳排行",100,180);
//用绿色画出未选择关
g_2d.setColor(Color.BLUE);
g_2d.drawString("开始游戏",100,130);
g_2d.drawString("游戏说明",100,230);
g_2d.drawString("音效设置",100,280);
g_2d.drawString("离开游戏",100,330);
}
else if(v3==true)
{
//用红色画出直线,表示被选中杆
g_2d.setColor(Color.RED);
g_2d.drawString("游戏说明",100,230);
//用绿色画出未选择关
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("开始游戏",100,130);
g_2d.drawString("音效设置",100,280);
g_2d.drawString("离开游戏",100,330);
}
else if(v4==true)
{
//用红色画出直线,表示被选中杆
g_2d.setColor(Color.RED);
g_2d.drawString("音效设置",100,280);
//用绿色画出未选择关
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("游戏说明",100,230);
g_2d.drawString("开始游戏",100,130);
g_2d.drawString("离开游戏",100,330);
}
else if(v5==true)
{
//用红色画出直线,表示被选中杆
g_2d.setColor(Color.RED);
g_2d.drawString("离开游戏",100,330);
//用绿色画出未选择关
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("游戏说明",100,230);
g_2d.drawString("音效设置",100,280);
g_2d.drawString("开始游戏",100,130);
}
}
public void keyPressed(KeyEvent e) //玩家行动控制,键盘事件处理
{
switch (e.getKeyCode())
{
case KeyEvent.VK_DOWN://当按下光标下键的事件处理
{
if(v1==true)
{
v1=!v1;
v2=!v2;
}
else if(v2==true)
{
v2=!v2;
v3=!v3;
}
else if(v3==true)
{
v3=!v3;
v4=!v4;
}
else if(v4==true)
{
v4=!v4;
v5=!v5;
}
else if(v5==true)
{
v5=!v5;
v1=!v1;
}
this.repaint();
} //重新绘制函数
break;
case KeyEvent.VK_UP://当按下光标上键的事件处理
{
if(v1==true)
{
v1=!v1;
v5=!v5;
}
else if(v2==true)
{
v2=!v2;
v1=!v1;
}
else if(v3==true)
{
v3=!v3;
v2=!v2;
}
else if(v4==true)
{
v4=!v4;
v3=!v3;
}
else if(v5==true)
{
v5=!v5;
v4=!v4;
}
this.repaint();
}
//重新绘制函数
break;
case KeyEvent.VK_ENTER:
{
if(v1==true)
{
System.out.println("开始游戏");
//this.setVisible(false);
mainframe.setVisible(true);
}
else if(v2==true)
{
System.out.println("最佳排行");
dialog1.setVisible(true);
}
else if(v3==true)
{
System.out.println("游戏说明");
dialog.setVisible(true);
}
else if(v4==true)
{
System.out.println("音效设置");
mult.setVisible(true);
}
else if(v5==true)
{
String m="确定要退出游戏吗?";
int ok=JOptionPane.showConfirmDialog(null,m,"确认",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION)
{
setVisible(false);
System.exit(0);
}
System.out.println("离开游戏");
}
}
}
}
//实现KeyListener接口中抽象方法,方法体为空
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
/* public static void main(String[] args)
{
KeyListenerDemo demo = new KeyListenerDemo();
demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -