Tasti up e down non funzionamnti

di il
2 risposte

Tasti up e down non funzionamnti

Package graficaprogetto;

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @author Michele Vinzi
*/
public class GraficaProgetto extends Canvas implements Runnable,KeyListener,MouseMotionListener{
private static int altezza;
private static int larghezza;
private static String nome="CNMS";
public static BufferedImage musica=null;
public static BufferedImage musica2=null;
public static BufferedImage puntatore=null;
private puntatore p;
public static BufferedReader k= new BufferedReader(new InputStreamReader(System.in));
private boolean att;
static JLabel label;





public GraficaProgetto() throws Exception{
caricaRisorse();
inizio();
}

public int getAltezza() {
return altezza;
}

public void setAltezza(int altezza) {
GraficaProgetto.altezza = altezza;
}

public int getLarghezza() {
return larghezza;
}

public void setLarghezza(int larghezza) {
GraficaProgetto.larghezza = larghezza;
}

private void caricaRisorse()throws Exception{
Caricatore log= new Caricatore();
musica=log.caricaImmagini("/immagini/musica.png");
musica2=log.caricaImmagini("/immagini/musica2.png");
puntatore=log.caricaImmagini("/immagini/star.png");
}
private void disegna(){
BufferStrategy b=this.getBufferStrategy();
if(b==null){
createBufferStrategy(2);
return;
}
Graphics g=b.getDrawGraphics();
g.drawImage(musica2, 0, 0,larghezza,altezza,this);
p.dis(g);
g.dispose();
b.show();
}

private void inizio(){
p=new puntatore(puntatore,0,50,50,this);
p.start();
}
public static void main(String[] args) throws Exception {
GraficaProgetto gP=new GraficaProgetto();
JFrame finestra= new JFrame(nome);
int s = 0;
do{
System.out.println("1-4:3");
System.out.println("2-16:9");
System.out.println("3-Uscita");
System.out.print("Risoluzione finestra: ");
s=Integer.parseInt(k.readLine());
switch(s){
case 1:
altezza=640;
larghezza=720;
break;
case 2:
altezza=720;
larghezza=1280;
break;
}
}while(s>=3);
Dimension dimensione= new Dimension(larghezza,altezza);
finestra.setPreferredSize(dimensione);
finestra.setMaximumSize(dimensione);
finestra.setResizable(false);
finestra.setIconImage(musica);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra.add(gP);
/*label=new JLabel(" App in fase di sviluppo");
finestra.add(label);*/
finestra.addKeyListener(gP);
finestra.pack();
finestra.setVisible(true);

Thread gPs= new Thread(gP);
gPs.start();

}

@Override
public void keyTyped(KeyEvent ke) {}

@Override
public void keyPressed(KeyEvent ke) {
int keycode=ke.getKeyCode();
switch(keycode){
case KeyEvent.VK_UP:
p.sopra();
break;
case KeyEvent.VK_DOWN:
p.sotto();
break;
}
}
@Override
public void keyReleased(KeyEvent ke) {}


@Override
public void run() {
att=true;
while(att){
disegna();
}
}

@Override
public void mouseDragged(MouseEvent me) {}

@Override
public void mouseMoved(MouseEvent me) {
int pt=0;
pt=(me.getPoint().y)-(p.geta()/2);
if(pt>=0 && pt+p.geta()<=altezza){
p.sety(pt);
}
}
}



package graficaprogetto;

import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;

/**
*
* @author Michele Vinzi
*/
public class puntatore extends Thread {
private int largh,x,y;
private int alt;
private boolean att;
private final int vel=10;
BufferedImage image;
GraficaProgetto main;
public puntatore(){}
public puntatore(BufferedImage im, int y,int l, int a, GraficaProgetto m){
x=150;
this.alt=a;
this.largh=l;
this.image=im;
this.y=y;
this.main=m;
}

public void setx(int v){
this.x=v;
}

public void sety(int v){
this.y=v;
}

public void setl(int v){
this.largh=v;
}
public void seta(int v){
this.alt=v;
}

public int getx(){return x;}
public int gety(){return y;}
public int geta(){return alt;}
public int getl(){return largh;}


public void sopra(){
if((y+alt)<main.getAltezza()){
y+=vel;
}
}
public void sotto(){
if((y-alt)>main.getAltezza()){
y-=vel;
}
}
public void dis(Graphics g){
g.drawImage(image, x, y, largh,alt,null);
}
public Rectangle getB(){
return new Rectangle(x,y,largh,alt);
}
}




package graficaprogetto;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;

/**
*
* @author Michele Vinzi
*/
public class Caricatore {
BufferedImage image;

public BufferedImage caricaImmagini(String po) throws IOException{
try{
image=ImageIO.read(getClass().getResource(po));
}
catch(Exception e){
System.out.println("Immagine alla posizione: "+po+" caricata correttamente");
Logger.getLogger(Caricatore.class.getName()).log(Level.SEVERE,null,e);

}
return image;
}
}


mi da un problema con i tasti di movimento ? e ? non fanno salire e scendere il puntatore

2 Risposte

  • Re: Tasti up e down non funzionamnti

    Boss273 ha scritto:


    mi da un problema con i tasti di movimento ? e ? non fanno salire e scendere il puntatore
    Registra il KeyListener su quel tuo gP (che è il Canvas) e settagli anche il focusable a true (è già di per sé focusable ma se lo setti esplicitamente prima di rendere visibile il tutto, il canvas riceve fin da subito gli eventi).

    gP.setFocusable(true);
    gP.addKeyListener(gP);


    Per il resto ... non ho letto tutto tutto ma ci sono comunque svariate cose NON buone: troppi campi static, nomi poco appropriati, design non molto buono e non hai sicuramente considerato le implicazioni dell'uso di un thread a parte oltre al Event Dispatch Thread. Detto onestamente, così non vai molto lontano ....
  • Re: Tasti up e down non funzionamnti

    Risolto andava sottratto a y l altezza e posto minore di main.geta entrambi i metodi di spostamento
Devi accedere o registrarti per scrivere nel forum
2 risposte