Zoomen mit MouseWheelListener

Schaaaf

Bekanntes Mitglied
Hallo,

Ich möchte mit dem Mausrad mein "gemaltes" (aus MeineKlasse) zoomen (in und out).

habe folgendes :

Java:
public class MeineKlasse extends JPanel{	

private final PaintingClass paintingComponent = new PaintingClass();

public Test() {
		super();	
		initialize();	
	}
	
private void initialize() {	
this.setBorder(BorderFactory.createTitledBorder(null, "TestProgramm"));
paintingComponent.setPreferredSize(new Dimension(height,width));
this.add(paintingComponent,BorderLayout.CENTER);
this.setVisible(true);
	}

.......

private void mouseWheelMoved(MouseWheelEvent ev){
int w;
int h;
int steps = ev.getWheelRotation();
        
        if (ev.getWheelRotation() < 0){ // hoch
??

        	paintingComponent.repaint();
        }	
        else{ // runter
??

        	paintingComponent.repaint();
        }
    }

}

PaintingClass enthält die paintComponent() Methode.


Jetzt weiß ich aber nicht genau, wie ich weiter machen muss.
1. wie errechne ich die neue Höhe /Breite?
2. Wo füge ich "mouseWheelMoved" hinzu, dass es immer ausführbar ist?
 

Schaaaf

Bekanntes Mitglied
Habe es jetzt noch anders versucht :

Java:
    private int height = 760;
    private int width = 450;

	public Polygon() {
		super();	
		initialize(height, width);	
		
		addMouseWheelListener(new MouseWheelListener() {
		      public void mouseWheelMoved(MouseWheelEvent ev) {		 
		    	  int steps = ev.getWheelRotation();
		          
		          if (ev.getWheelRotation() < 0){ // hoch
		          	zoom += steps;
		          }	
		          else{ // runter
		          	zoom += steps;

		          }
		      }
		    });
	}

Jetzt reagiert er schon mal jederzeit auf das Scrollen, aber leider weiß ich trotzdem noch nicht, wie ich die neue Größe (sinnvoll) berechne und dann auch setze?
 

Schaaaf

Bekanntes Mitglied
Habe es jetzt so gemacht:

Java:
addMouseWheelListener(new MouseWheelListener() {
		      public void mouseWheelMoved(MouseWheelEvent ev) {		 
		    	  int steps = ev.getWheelRotation();
		          
		          if (ev.getWheelRotation() > 0){ 
		          	zoom += steps;
		          	d = d - 10;
		          	distance = distance - 10;
		          }	
		          else{ 
			          	zoom += steps;
			          	d = d + 10;
			          	distance = distance + 10;
		          }
		      }
		    });

Weiß zwar nicht, ob das "stilvoll" ist, aber erstmal geht es. Gibt es noch eine Mgl. dass der Wechsel der Bilder (beim Zoomen) nicht so stockende aussieht?Sondern flüssig in einander übergeht?
 

Schaaaf

Bekanntes Mitglied
Weiß niemand Rat?

Gibt es außerdem noch die Möglichkeit einen Max und Min Wert zu setzen? So dass man nur bis zu einer bestimmten Stufe minimieren/maximieren kann? Weiß nicht genau wie ich diese Abfrage abfangen soll.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben