?? 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的,對應(yīng)序號的桿被選
boolean v1 = true,v2 = false,v3 = false,v4 = false,v5 = false;
private ImageIcon images;
//幫助信息Dialog窗口對象聲明
幫助信息 dialog;
最佳排行 dialog1;
MultiMidiDemo mult;
public KeyListenerDemo()
{
//獲取內(nèi)容面板
Container container = getContentPane();
//創(chuàng)建幫助信息Dialog窗口對象
dialog = new 幫助信息();
//創(chuàng)建用于繪制圖像的面板
imagePanel = new ImagePanel();
images= new ImageIcon("img0029.jpg");
mult=new MultiMidiDemo();
mainframe=new MainFrame();
container.add(imagePanel, BorderLayout.CENTER);
addKeyListener(this); //添加鍵盤事件監(jiān)聽器
//this.setSize(400,400);
this.setBounds(150,150,400,400); //設(shè)置窗口大小
//this.setVisible(true); //設(shè)置窗口為可見 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);
//游戲界面中,設(shè)置說明性文字的字體、顏色、位置及內(nèi)容
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);
//用綠色畫出未選擇關(guān)
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("游戲說明",100,230);
g_2d.drawString("音效設(shè)置",100,280);
g_2d.drawString("離開游戲",100,330);
}
else if(v2==true)
{
//用紅色畫出直線,表示被選中桿
g_2d.setColor(Color.RED);
g_2d.drawString("最佳排行",100,180);
//用綠色畫出未選擇關(guān)
g_2d.setColor(Color.BLUE);
g_2d.drawString("開始游戲",100,130);
g_2d.drawString("游戲說明",100,230);
g_2d.drawString("音效設(shè)置",100,280);
g_2d.drawString("離開游戲",100,330);
}
else if(v3==true)
{
//用紅色畫出直線,表示被選中桿
g_2d.setColor(Color.RED);
g_2d.drawString("游戲說明",100,230);
//用綠色畫出未選擇關(guān)
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("開始游戲",100,130);
g_2d.drawString("音效設(shè)置",100,280);
g_2d.drawString("離開游戲",100,330);
}
else if(v4==true)
{
//用紅色畫出直線,表示被選中桿
g_2d.setColor(Color.RED);
g_2d.drawString("音效設(shè)置",100,280);
//用綠色畫出未選擇關(guān)
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);
//用綠色畫出未選擇關(guān)
g_2d.setColor(Color.BLUE);
g_2d.drawString("最佳排行",100,180);
g_2d.drawString("游戲說明",100,230);
g_2d.drawString("音效設(shè)置",100,280);
g_2d.drawString("開始游戲",100,130);
}
}
public void keyPressed(KeyEvent e) //玩家行動控制,鍵盤事件處理
{
switch (e.getKeyCode())
{
case KeyEvent.VK_DOWN://當(dāng)按下光標下鍵的事件處理
{
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();
} //重新繪制函數(shù)
break;
case KeyEvent.VK_UP://當(dāng)按下光標上鍵的事件處理
{
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;
}
this.repaint();
}
//重新繪制函數(shù)
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("音效設(shè)置");
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("離開游戲");
}
}
}
}
//實現(xiàn)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);
}*/
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -