Javafx более пригоден для многократного нажатия и изменения текста из 30 надписей на одной странице - PullRequest
0 голосов
/ 21 апреля 2020

Итак, я создаю приложение, в котором у меня есть арабский c текст по всей странице, добавленный в виде изображения через PDF-документ в файл f xml, и я добавляю ярлыки, чтобы после того, как я проведу вправо я вижу перевод на английский sh и когда я провожу пальцем влево, я вижу арабский c язык. Я знаю, что там будет более 800 страниц текста на арабском c и вдвое больше меток. Вы бы порекомендовали более удобный способ достижения этого?

У меня есть код для 10 ярлыков, которые я добавил, и я хочу, чтобы текст изменился:

Главное - я хочу, чтобы стиль и шрифт оставались согласованными и единственной вещью это изменит текст.

Даже с приведенным ниже кодом, когда я его запускаю, я вижу, что как только вы щелкаете один раз, все ярлыки отображаются на английском языке sh, поэтому даже для этого мне нужно добавить отдельные методы. ... но я надеюсь, что кто-то может помочь мне и порекомендовать решение с использованием одного метода, который можно повторно использовать для всех 10 ярлыков на одной странице. кое-что, как если бы нам пришлось что-то изменить, мы могли бы просто изменить в этом одном локализованном месте.

Я новичок в разработке, я инженер Automation Selenium, поэтому я понимаю возможность повторного использования с точки зрения тестирования, но я новичок в разработке.

пожалуйста, помогите.

спасибо

      @FXML
void changeTexttoEnglish(String setstyle, String setText, String setFont) {
    invisiblelabelpg2header.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2header.setText("In the name of ALLAH, the Lord of Mercy, the Giver of Mercy!");
    invisiblelabelpg2header.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));


    invisiblelabelpg2label1.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label1.setText("All praise is for Allah, Lord of all worlds");
    invisiblelabelpg2label1.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label2.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label2.setText("The Most Compassionate");
    invisiblelabelpg2label2.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label3.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label3.setText("The Most Merciful");
    invisiblelabelpg2label3.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label4.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label4.setText("Master of the Day of Judgement");
    invisiblelabelpg2label4.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label5.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label5.setText("We only worship You and only ask You for help");
    invisiblelabelpg2label5.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label6.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label6.setText("Guide as along the Straight Path");
    invisiblelabelpg2label6.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label7.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label7.setText("The Path");
    invisiblelabelpg2label7.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label8.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label8.setText("of those you have blessed");
    invisiblelabelpg2label8.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label9.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label9.setText("Not those");
    invisiblelabelpg2label9.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

    invisiblelabelpg2label10.setStyle("-fx-background-color: linear-gradient(#86C1B9, #7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label10.setText("You are displeased with or those who are astray");
    invisiblelabelpg2label10.setFont(Font.font("Comic Sans", FontWeight.BOLD, 10));

}

@FXML
private void changeTexttoArabic() {
    invisiblelabelpg2header.setText(null);
    invisiblelabelpg2header.setStyle(null);

    invisiblelabelpg2label1.setText(null);
    invisiblelabelpg2label1.setStyle(null);

    invisiblelabelpg2label2.setText(null);
    invisiblelabelpg2label2.setStyle(null);

    invisiblelabelpg2label3.setText(null);
    invisiblelabelpg2label3.setStyle(null);

    invisiblelabelpg2label4.setText(null);
    invisiblelabelpg2label4.setStyle(null);

    invisiblelabelpg2label5.setText(null);
    invisiblelabelpg2label5.setStyle(null);

    invisiblelabelpg2label6.setText(null);
    invisiblelabelpg2label6.setStyle(null);

    invisiblelabelpg2label7.setText(null);
    invisiblelabelpg2label7.setStyle(null);

    invisiblelabelpg2label8.setText(null);
    invisiblelabelpg2label8.setStyle(null);

    invisiblelabelpg2label9.setText(null);
    invisiblelabelpg2label9.setStyle(null);

    invisiblelabelpg2label10.setText(null);
    invisiblelabelpg2label10.setStyle(null);


}

}

1 Ответ

0 голосов
/ 21 апреля 2020

Слишком мало кода, чтобы реально решить вашу проблему. В моем понимании вашей проблемы есть два способа go:

1) вы можете использовать метод, который создает метки со стилем и тому подобное. Вы можете использовать al oop для создания меток или их стилизации, и вы смогли сохранить их в массиве или в списке.

Для этого решения я бы рекомендовал сохранить шрифт и стиль в переменная класса (поле), как вы говорите, они не меняются. Тогда метод будет выглядеть примерно так, чтобы создать метки

Label createLabel(String text) {
    Label lbl = new Label(text);
    lbl.setStyle...
    ....
    return lbl;
}

Label[] labels = new Label[10];
for (int i = 0; i < labels.size; i++)
    labels[i] = createLabel(getTextFromSomewhere());

. Затем вы можете перебрать массив (или список), чтобы изменить текст. Вы также можете создавать простые методы, чтобы делать то, что нужно для всех меток, и вызывать их в простых циклах for или for-each.

2) Поскольку вы используете определенный стиль, вы можете создать подкласс Label, а затем получить возможность стилизовать этикетки, используя лист css. Так что вам больше не понадобится весь код для стиля. Поскольку у вас всегда есть группа меток, для которых необходимо выполнить одинаковые действия, go для 1) для обращения к группе (массив, список, ...)

...