auto resizing java
Zoom JPanel en Java Swing (2)
Esto es sólo un scetch:
- en su
JPanelun seguimiento de un AffineTransform que represente el factor de escala (consulteAffineTransform.scale(double,double), - anule el método de
paintde suJPanel: antes de llamar asuper.paintaplique la transformación afín a su objetoGraphics2D(emitido desde el parámetro del método depaint) llamando aGraphics2D.setTransform(AffineTransform), luego llame asuper.paint - anular los métodos
processMouseEvent,processMouseMotionEventyprocessMouseWheelEvent, aplicar la transformación afín a las coordenadas de su parámetro de evento de ratón (AffineTransform.transform(java.awt.geom.Point2D,java.awt.geom.Point2D)), llamar respectivosupermétodo después .
Espero que esto ayude.
Tengo una aplicación Java Swing existente. En el medio de la aplicación hay un único JPanel que quiero poder JPanel y JPanel . El JPanel tiene una cantidad de JComponents en él (en su mayoría otros JPanels y JLabels ).
Asimismo, la posición del mouse también deberá ajustarse adecuadamente, por lo que los mouseevents deben permanecer igual incluso después de que el JPanel haya sido JPanel . Como tal, simplemente cambiar los métodos de paint de cada component no parece plausible.
EDITAR:
De acuerdo, lo tengo funcionando usando la class MagnifierUI con algunas ediciones menores. Sin embargo, el panel ampliado que creo tiene los mouseevents incorrectos, es decir, el panel está escalado, los mouseevents no.
Pruebe SwingUtilities.convertPoint (fuente, punto, destino);