duc_bit_imp9/Quellcodes/duc_bit_bmphexeditor/Bild.java
2024-12-29 13:43:45 +01:00

160 lines
4 KiB
Java

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;
}
}