resizing java swing user-interface jpanel zoom

auto resizing java



Zoom JPanel en Java Swing (2)

Esto es sólo un scetch:

  • en su JPanel un seguimiento de un AffineTransform que represente el factor de escala (consulte AffineTransform.scale(double,double) ,
  • anule el método de paint de su JPanel : antes de llamar a super.paint aplique la transformación afín a su objeto Graphics2D (emitido desde el parámetro del método de paint ) llamando a Graphics2D.setTransform(AffineTransform) , luego llame a super.paint
  • anular los métodos processMouseEvent , processMouseMotionEvent y processMouseWheelEvent , 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 respectivo super mé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);