Assalamualaikum Wr.. Wb..
Sepertinya penulis sudah lama tidak pernah meng-update blog ini lagi, karena begitu banyak kesibukan dari luar hingga penulis lupa dengan tulis menulis di blog ini.
Sekarang penulis akan menyampaikan tentang pembuatan KeyListener di java untuk menggerakan gambar atau membaca inputan karakter dari Keyboard, adapun tulisan ini dibuat karena permintaan dari salah satu teman penulis yang dari kampus, katanya sih ingin dibuatkan tentang GAME KEYBOARD, hemm.... penulis bingung maksud dari pertanyaan tersebut, namun pada intinya mungkin teman penulis maksudnya ingin dibuatkan sebuah game sederhana yang hanya sebuah gambar bergerak dengan menggunakan tombol navigasi di keyboard ( mungkin tu maksudnya ) he..he...
Sekarang penulis akan menyampaikan tentang pembuatan KeyListener di java untuk menggerakan gambar atau membaca inputan karakter dari Keyboard, adapun tulisan ini dibuat karena permintaan dari salah satu teman penulis yang dari kampus, katanya sih ingin dibuatkan tentang GAME KEYBOARD, hemm.... penulis bingung maksud dari pertanyaan tersebut, namun pada intinya mungkin teman penulis maksudnya ingin dibuatkan sebuah game sederhana yang hanya sebuah gambar bergerak dengan menggunakan tombol navigasi di keyboard ( mungkin tu maksudnya ) he..he...
ya dah sekarang kita langsung kepokok permasalahannya sajah.
Menggerakan gambar dengan tombol navigasi
buat kelas interface dengan nama
ListenerKeyboard.java
kelas ini digunakan sebagai template untuk mendengarkan tombol navigasi dan semua karakter yang ada di Keyboard
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.util;
import java.awt.event.KeyEvent;
/**
*
* @author Islam
*/
public interface ListenerKeyboard {
public void LeftMode();
public void RigthMode();
public void UpMode();
public void DownMode();
public void BackSpace();
public void AllCharacter(KeyEvent e);
public String getText();
}
Kemudian buat kelas
PanelImage.java
Kelas ini untuk panel yang akan kita berikan gambar dan mengatur lokasi sesuai dengan tombol navigasi
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.widget;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
/**
*
* @author Islam
*/
public class PanelImage extends JPanel{
private Image img;
private int location_X=50,location_Y=50;
private String status="";
public PanelImage(String filename) {
img = new ImageIcon(filename).getImage();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gd = (Graphics2D) g.create();
gd.drawImage(img, location_X, location_Y, img.getWidth(null), img.getHeight(null), null);
gd.drawString(status, location_X, location_Y);
gd.dispose();
}
public void Left(){
if(location_X==0)
return;
else
location_X--;
status = "Ke Kiri \n (Left)";
repaint();
}
public void Rigth(){
location_X++;
status = "Ke Kanan \n (Rigth)";
repaint();
}
public void Up(){
if(location_Y==0)
return;
else
location_Y--;
status = "Ke Atas \n (UP)";
repaint();
}
public void Down(){
location_Y++;
status = "Ke Bawah \n (Down)";
repaint();
}
}
Setelah itu baru buat kelas
ActionGameImage.java
Kelas ini merupakan implementasi dari kelas ListenerKeyboard dan masing-masing method memiliki aksinya sendiri.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.action;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;
import latihan.game.util.ListenerKeyboard;
import latihan.game.widget.PanelImage;
/**
*
* @author Islam
*/
public class ActionGameImage implements ListenerKeyboard{
private PanelImage panel;
public ActionGameImage(PanelImage panel) {
this.panel=panel;
}
@Override
public void LeftMode() {
panel.Left();
}
@Override
public void RigthMode() {
panel.Rigth();
}
@Override
public void UpMode() {
panel.Up();
}
@Override
public void DownMode() {
panel.Down();
}
@Override
public void BackSpace() {
return;
}
@Override
public void AllCharacter(KeyEvent e) {
JOptionPane.showMessageDialog(null, "Anda Menekan hurup " +e.getKeyChar());
}
@Override
public String getText() {
return null;
}
}
dan sekarang buat aksi untuk component panelnya turunkan dari kelas KeyAdapter
buat kelas dengan nama
ActionImage.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.util;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
*
* @author Islam
*/
public class ActionImage extends KeyAdapter{
private ListenerKeyboard listener;
public ActionImage() {
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
if(e.getKeyCode()==KeyEvent.VK_LEFT){
listener.LeftMode();
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
listener.RigthMode();
}else if(e.getKeyCode()==KeyEvent.VK_UP){
listener.UpMode();
}else if(e.getKeyCode()==KeyEvent.VK_DOWN){
listener.DownMode();
}else if(e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
listener.BackSpace();
}else {
listener.AllCharacter(e);
}
}
public void addListener(ListenerKeyboard listener){
this.listener=listener;
}
}
Setelah semua aksinya telah dibuat baru sekarang kita masuk ke GUI-nya
buat kelas dengan nama
FormGameImage.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.gui;
import javax.swing.JFrame;
import latihan.game.action.ActionGameImage;
import latihan.game.util.ActionImage;
import latihan.game.widget.PanelImage;
/**
*
* @author Islam
*/
public class FormGameImage extends JFrame{
private PanelImage panel = new PanelImage("gambar.png");
private ActionGameImage listener = new ActionGameImage(panel);
public FormGameImage(){
initComponent();
ActionImage action = new ActionImage();
action.addListener(listener);
panel.addKeyListener(action);
panel.setFocusable(true);
}
private void initComponent(){
setDefaultCloseOperation(3);
setContentPane(panel);
setLocationRelativeTo(null);
setSize(300, 300);
}
}
lalu untuk menjalankannya buat kelas dengan nama
MainGameImage.java
/*kelas ini digunakan sebagai template untuk mendengarkan tombol navigasi dan semua karakter yang ada di Keyboard
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.util;
import java.awt.event.KeyEvent;
/**
*
* @author Islam
*/
public interface ListenerKeyboard {
public void LeftMode();
public void RigthMode();
public void UpMode();
public void DownMode();
public void BackSpace();
public void AllCharacter(KeyEvent e);
public String getText();
}
Kemudian buat kelas
PanelImage.java
Kelas ini untuk panel yang akan kita berikan gambar dan mengatur lokasi sesuai dengan tombol navigasi
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.widget;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
/**
*
* @author Islam
*/
public class PanelImage extends JPanel{
private Image img;
private int location_X=50,location_Y=50;
private String status="";
public PanelImage(String filename) {
img = new ImageIcon(filename).getImage();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gd = (Graphics2D) g.create();
gd.drawImage(img, location_X, location_Y, img.getWidth(null), img.getHeight(null), null);
gd.drawString(status, location_X, location_Y);
gd.dispose();
}
public void Left(){
if(location_X==0)
return;
else
location_X--;
status = "Ke Kiri \n (Left)";
repaint();
}
public void Rigth(){
location_X++;
status = "Ke Kanan \n (Rigth)";
repaint();
}
public void Up(){
if(location_Y==0)
return;
else
location_Y--;
status = "Ke Atas \n (UP)";
repaint();
}
public void Down(){
location_Y++;
status = "Ke Bawah \n (Down)";
repaint();
}
}
Setelah itu baru buat kelas
ActionGameImage.java
Kelas ini merupakan implementasi dari kelas ListenerKeyboard dan masing-masing method memiliki aksinya sendiri.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.action;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;
import latihan.game.util.ListenerKeyboard;
import latihan.game.widget.PanelImage;
/**
*
* @author Islam
*/
public class ActionGameImage implements ListenerKeyboard{
private PanelImage panel;
public ActionGameImage(PanelImage panel) {
this.panel=panel;
}
@Override
public void LeftMode() {
panel.Left();
}
@Override
public void RigthMode() {
panel.Rigth();
}
@Override
public void UpMode() {
panel.Up();
}
@Override
public void DownMode() {
panel.Down();
}
@Override
public void BackSpace() {
return;
}
@Override
public void AllCharacter(KeyEvent e) {
JOptionPane.showMessageDialog(null, "Anda Menekan hurup " +e.getKeyChar());
}
@Override
public String getText() {
return null;
}
}
dan sekarang buat aksi untuk component panelnya turunkan dari kelas KeyAdapter
buat kelas dengan nama
ActionImage.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.util;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
*
* @author Islam
*/
public class ActionImage extends KeyAdapter{
private ListenerKeyboard listener;
public ActionImage() {
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
if(e.getKeyCode()==KeyEvent.VK_LEFT){
listener.LeftMode();
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
listener.RigthMode();
}else if(e.getKeyCode()==KeyEvent.VK_UP){
listener.UpMode();
}else if(e.getKeyCode()==KeyEvent.VK_DOWN){
listener.DownMode();
}else if(e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
listener.BackSpace();
}else {
listener.AllCharacter(e);
}
}
public void addListener(ListenerKeyboard listener){
this.listener=listener;
}
}
Setelah semua aksinya telah dibuat baru sekarang kita masuk ke GUI-nya
buat kelas dengan nama
FormGameImage.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.gui;
import javax.swing.JFrame;
import latihan.game.action.ActionGameImage;
import latihan.game.util.ActionImage;
import latihan.game.widget.PanelImage;
/**
*
* @author Islam
*/
public class FormGameImage extends JFrame{
private PanelImage panel = new PanelImage("gambar.png");
private ActionGameImage listener = new ActionGameImage(panel);
public FormGameImage(){
initComponent();
ActionImage action = new ActionImage();
action.addListener(listener);
panel.addKeyListener(action);
panel.setFocusable(true);
}
private void initComponent(){
setDefaultCloseOperation(3);
setContentPane(panel);
setLocationRelativeTo(null);
setSize(300, 300);
}
}
lalu untuk menjalankannya buat kelas dengan nama
MainGameImage.java
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihan.game.main;
import latihan.game.gui.FormGameImage;
/**
*
* @author Islam
*/
public class MainGameImage {
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormGameImage().setVisible(true);
}
});
}
}
Silahkan download linknya disini
Tidak ada komentar:
Posting Komentar