2016-05-05 17 views
2

Ich bin neu in Java, und ich arbeite mit einem Schulprojekt.Wie verschiebe ich eine Matrix

In diesem Projekt muss ich eine Matrix mit einem KeyListener erstellen. Ich habe es etwa so:

if (!(e.getKeyChar()>='0' && e.getKeyChar()<='9' || e.getKeyChar()=='-' || e.getKeyCode()==10)) { 
     if(!(e.getKeyChar() == 'w' || e.getKeyChar() == 'b')){ 
      JOptionPane.showMessageDialog(lince, "Not Allowed", "Fatal Error", JOptionPane.ERROR_MESSAGE); 
     } 
    }else{ 
     if(e.getKeyCode()==10){ 
      try{  
       MatrixI[i][j]=Integer.parseInt(Posicion); 
       j++; 
       Posicion = ""; 
     if (j== 4){ 
       i++; 
       j=0; 
     }if (i==5){ 
      if (!(i >= 6)){  
       JOptionPane.showMessageDialog(lince, "You cannot add more numbers", "Not Allowed!!!", JOptionPane.ERROR_MESSAGE); 
       contar(); 
      } 
     }  
      }catch(ArrayIndexOutOfBoundsException ex){ 
       JOptionPane.showMessageDialog(lince, "You cannot add more numbers", "Not Allowed!!!", JOptionPane.ERROR_MESSAGE); 
       System.exit(0); 
      } 
      catch(NumberFormatException ex){ 
        JOptionPane.showMessageDialog(lince, "Just write a number", "Not Allowed!!!", JOptionPane.ERROR_MESSAGE); 
      } 
     }else{ 
      Posicion=Posicion+e.getKeyChar(); 
      this.escribe(lince.getGraphics()); 
     } 
    } 


public void escribe(Graphics g){ 
    g.setColor(Color.red); 
    g.setFont(new Font("Arial", Font.CENTER_BASELINE,12)); 
    g.drawString(Posicion, 30+((1+j)*50),((1+i)*35)); 
} 

Dieser Teil druckt die Matrix, aber es ist nicht in einer guten Position, und ich möchte es bewegen.

enter image description here

Hat jemand eine Idee?
Wie kann ich es bewegen?

+0

'Grafik # drawString (String, int, int)' wo die 'int' Werte x/y sind ... versuche den' y' Wert zu ändern – MadProgrammer

Antwort

0

Sie müssen diese Codezeile ändern:

g.drawString(Posicion, 30+((1+j)*50),((1+i)*35)); 

DrawString nimmt, was man als ersten Parameter schreiben wollen, und dann x und y-Koordinaten. Wenn Sie zum Beispiel nach oben verschieben möchten, subtrahieren Sie etwas von der y-Koordinate.

+1

* "Wenn du es nach oben verschieben willst, füge etwas hinzu y coord "* - 2D Graphics arbeitet im oberen/linken Koordinatenraum (0x0 ist oben links). Wenn Sie also etwas nach oben verschieben möchten, müssen Sie von der y-Koordinate abziehen. – MadProgrammer

+0

Sie haben Recht. Ich habe meine Antwort korrigiert. Danke für Ihre Rückmeldung! – Aurasphere