Я работаю над проектом, чтобы содержимое JApplet автоматически масштабировалось до размера, указанного в html. Я понимаю, что это именно то, для чего были созданы менеджеры макетов, однако, поскольку мне не разрешено переписывать всю структуру апплетов, я решил, что попытаюсь переопределить краску и просто установить AffineTransform объекта Graphics в соответствующую масштабированную версию , затем захватите мыши События в верхнем контейнере и масштабируйте их с помощью соответствующего масштабирующего преобразования. Я сейчас застрял на чертежной части. При просмотре в веб-браузере он отображает масштабированную версию правильно один раз, а затем изображение уменьшается до первоначального размера. Кроме того, кажется, что метод рисования в JApplet называется только один раз. Вот кадрированная версия моего кода, которая фокусируется на проблеме. Любая помощь будет оценена по достоинству. Заранее спасибо.метод переопределения краски в JApplet
import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
public class Test extends JApplet
{
public static final int ORIGINAL_APPLET_WIDTH = 1024;
public static final int ORIGINAL_APPLET_HEIGHT = 800;
private AffineTransform scalingTransform;
private AffineTransform inverseScalingTransform;
@Override
public void init()
{
double xFactor = ((double)(this.getWidth()))/((double)(Test.ORIGINAL_APPLET_WIDTH));
double yFactor = ((double)(this.getHeight()))/((double)(Test.ORIGINAL_APPLET_HEIGHT));
this.scalingTransform = new AffineTransform();
this.inverseScalingTransform = new AffineTransform();
this.scalingTransform.scale(xFactor,yFactor);
this.inverseScalingTransform.scale(1D/xFactor,1D/yFactor);
}
@Override
public void paint(Graphics g)
{
((Graphics2D)g).setTransform(Test.this.scalingTransform);
super.paint(g);
}
}
Не совсем та же проблема, но [здесь] (http://stackoverflow.com/questions/2244157/reverse-java-graphics2d-scaled-and-rotated-coordinates) является примером сохранения преобразования, используемого при рисовании и использовать его для сопоставления координат мыши с пикселями исходного изображения. – finnw