У меня есть следующий код:
for (int i = 0; i < numElementos; i++){
palillos[i] = new JLabel() {
/**
* Para rotar el palillo.
* @param grafico
*/
@Override
protected void paintComponent(Graphics grafico) {
Graphics2D graficoNuevo = (Graphics2D) grafico;
graficoNuevo.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON
);
AffineTransform at = graficoNuevo.getTransform();
Shape figura = graficoNuevo.getClip();
double X = getWidth() / 2.0;
double Y = getHeight() / 2.0;
/**
*
* Aquí es donde tengo el problema, no puedo me salen los valores
* si coloco la i que itera el arreglo.
*/
at.rotate(Math.toRadians(gradosInclinacionPalillos[i]), X, Y);
/**
* Intento que con cada JLabel creado se tenga una rotación de la
* imagen que contiene el JLabel diferente.
*/
graficoNuevo.setTransform(at);
graficoNuevo.setClip(figura);
super.paintComponent(grafico);
}
};
panel.add(palillos[i]).setBounds(coordenadasPalillos[i][0], coordenadasPalillos[i][1], 18, 65);
}
Я хочу согласиться на стоимость вектора мочь распределять ему ротацию, которую я желаю в этот элемент, я сделал публичный вектор, чтобы мочь соглашаться стоимость без проблем, но это не производит проблемы, потому что этот вектор - практически статическая структура, уже у него есть вся Ваша распределенная стоимость и Ваш размер не различается от того, который у него есть, начавшись.
Тогда, я представляю, что проблема переменной, с которой я повторяю, i
, дело в том, что он меняет Вашу стоимость со временем, и это дает проблемы с анонимной функцией JLabel.
Пожалуйста, помощь, чтобы мочь повторять этот вектор и менять эту ротацию.
Верь в класс, который он увеличивает JLabel со строителем, который получает как parГЎmetro она inclinaciГіn и sobreescribГ - mГ©todo paintComponent:
public class MyJLabel extends JLabel {
private final double inclinacion;
public MyJLabel(double inclinacion) {
super();
this.inclinacion = inclinacion;
}
@Override
protected void paintComponent(Graphics grafico) {
Graphics2D graficoNuevo = (Graphics2D) grafico;
graficoNuevo.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON
);
AffineTransform at = graficoNuevo.getTransform();
Shape figura = graficoNuevo.getClip();
double X = getWidth() / 2.0;
double Y = getHeight() / 2.0;
at.rotate(Math.toRadians(inclinacion), X, Y);
graficoNuevo.setTransform(at);
graficoNuevo.setClip(figura);
super.paintComponent(grafico);
}
}