Buongiorno a tutti!! ho un problema con questo pannello che auto ridistribuisce il suo contenuto in base alla dimensione ed inoltre cambia l'origine e l'orientazione del sistema di riferimento per disegnare i componenti.
public class AutoResizablePanel extends JPanel{
private boolean showXaxis;
private boolean showYaxis;
private int XaxisLength = 100;
private int YaxisLength = 100;
private BasicStroke XaxisStroke = new BasicStroke(1);
private BasicStroke YaxisStroke = new BasicStroke(1);
private Color XaxisColor = Color.BLACK;
private Color YaxisColor = Color.BLACK;
private boolean scaleUniform = true;
private double ScaleUniformFactor;
private double ScaleX;
private double ScaleY;
private Dimension BuildingBox = new Dimension(200, 300);
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D G2D = (Graphics2D) g;
G2D.translate(0, this.getHeight());
ScaleX = (double)this.getHeight()/BuildingBox.height;
ScaleY = (double)this.getWidth()/BuildingBox.width;
ScaleUniformFactor = scaleUniform ? Math.min(ScaleX, ScaleY) : 0;
G2D.rotate(Math.toRadians(-90));
if(scaleUniform){
G2D.transform(AffineTransform.getScaleInstance(ScaleUniformFactor, ScaleUniformFactor));
}else{
G2D.transform(AffineTransform.getScaleInstance(ScaleX, ScaleY));
}
}
}
Il problema è che aggiungendo qualsiasi componente (vedi bottone) su un null layout questo perde il suo mouse listener -.-
Si può fare qualcosa o devo abbandonare questa tecnica di ridimensionamento "automatico"?
Tente conto che dovrei disegnare una pianta do una casa con le stanze cliccabili... ergo i pulsanti sono importanti