Как я пробегаю договоренность внутри анонимной функции с глобальным параметром?

У меня есть следующий код:

  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.

Пожалуйста, помощь, чтобы мочь повторять этот вектор и менять эту ротацию.

1
задан 08.11.2019, 01:44
1 ответ

Верь в класс, который он увеличивает 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);
    }
}
1
ответ дан 01.12.2019, 12:18

Теги

Похожие вопросы