import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax.swing.*; import javax.imageio.*; import java.io.*; class Bild extends JComponent { Datei file; BMPHexEditor parent; Image image; int zoom=100; int posx =2; int posy =2; /* class myKeyListener implements KeyListener { public void keyPressed( KeyEvent k ) { int iHeight = getSize().height; if (k.getKeyCode()==8) delete(-1); if (k.getKeyCode()==127) delete(0); if (k.getKeyCode()==37) movePos(-1); if (k.getKeyCode()==39) movePos(1); if (k.getKeyCode()==38) movePos(-proZeile); if (k.getKeyCode()==40) movePos(proZeile); if (k.getKeyCode()==33) movePos(-proZeile*(iHeight/hoehe)); if (k.getKeyCode()==34) movePos(proZeile*(iHeight/hoehe)); } public void keyReleased(KeyEvent k){} public void keyTyped(KeyEvent k){ // System.out.println( "Typed:"+k.getKeyCode()+"|"+k.getKeyChar() ); switch(modus) { case 1: { if (k.getKeyChar()>='0' && k.getKeyChar()<='1') modifyByte(k.getKeyChar()); break; } case 2: { if (k.getKeyChar()>='0' && k.getKeyChar()<='9') modifyByte(k.getKeyChar()); if (k.getKeyChar()>='a' && k.getKeyChar()<='f') modifyByte(k.getKeyChar()); if (k.getKeyChar()>='A' && k.getKeyChar()<='F') modifyByte(k.getKeyChar()); break; } default: { if (k.getKeyCode()!= 127) modifyByte(k.getKeyChar()); } } } } */ class myMouseListener implements MouseListener { public void mouseClicked( MouseEvent e ) { } public void mouseExited(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mousePressed(MouseEvent e) { setPos((e.getX()-10)*100/zoom+1,(e.getY()-10)*100/zoom+1 ); parent.posClicked(posx, posy); } public void mouseReleased(MouseEvent e) { } } public Bild(BMPHexEditor p){ super(); parent = p; file = null; image = null; // addKeyListener(new myKeyListener()); addMouseListener(new myMouseListener()); } public void paint(Graphics g){ int iWidth = getSize().width; int iHeight = getSize().height; if (file != null && image != null) { g.drawImage(image,10,10, this); g.drawRect(9,9,image.getWidth(this)+2,image.getHeight(this)+2); if (posx >=0 && posy >= 0) { g.setColor(Color.red); g.fillRect((posx+1)*zoom/100+10,(posy-1)*zoom/100+10,4*zoom/100,zoom/100); g.fillRect((posx-1)*zoom/100+10,(posy+1)*zoom/100+10,zoom/100,4*zoom/100); g.fillRect((posx-6)*zoom/100+10,(posy-1)*zoom/100+10,4*zoom/100,zoom/100); g.fillRect((posx-1)*zoom/100+10,(posy-6)*zoom/100+10,zoom/100,4*zoom/100); } } } public void setDatei(Datei file) { this.file = file; try { image = ImageIO.read(new ByteArrayInputStream(file.getByteArray())); image = image.getScaledInstance(image.getWidth(this)*zoom/100,image.getHeight(this)*zoom/100,Image.SCALE_DEFAULT); } catch (Exception e) { // TODO Auto-generated catch block // System.out.println("Bild kann nicht geladen werden oder ist nicht korrekt"); image = null; } } public void setZoom(int z) { zoom = z; setDatei(file); } public void setPos(int x, int y) { posx = x; posy = y; repaint(); } public Dimension getPreferredSize() { if (file == null || image == null) { return new Dimension( 300, 200 ); } else { return new Dimension( image.getWidth(this)+20,image.getHeight(this)+20); } } public Dimension getMinimumSize() { return getPreferredSize(); } public void keyPressed ( KeyEvent e){ } public void keyReleased ( KeyEvent e ){ } public boolean isFocusable() { return true; } }