Javafx更可重用,可以单击并更改一页上30个标签的文本

问题描述 投票:0回答:1

因此,我正在构建一个应用程序,其中我在整个页面上都通过fxml文件中的pdf文档将阿拉伯文本添加为​​图像,并且添加了标签,以便在向右滑动时看到英文翻译,何时我向左滑动,我看到阿拉伯语。我知道将会有800页以上的阿拉伯文字,并且标签数量会增加一倍,您会建议一种更可重用的方式来实现这一目标吗?

我具有的代码用于添加的10个标签,并且我希望文本在:中更改

主要是-我希望样式和字体保持一致,唯一会改变的是文本。

即使在我运行它时使用下面的代码,我也看到,一旦单击一次,所有标签都将以英语显示,因此即使是这一步,我也需要添加单独的方法。 ..但我希望有人能帮助我,并推荐一种使用一种方法的解决方案,该方法对于一页中的所有10个标签完全可重复使用。一些我们是否必须更改的方法,我们可以只在那个本地化位置进行更改。

我是开发人员新手,我是一名自动化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);


}

}

javafx fxml scenebuilder gluon-mobile javafxports
1个回答
0
投票

几乎没有代码可以真正解决您的问题。在我对您的问题的理解中,有两种解决方法:

1)您可以使用一种使用样式等构造标签的方法。然后,您可以使用循环创建标签(或设置标签样式),然后将其存储在数组或列表中。

对于此解决方案,我建议将字体和样式保存在类变量(字段)中,正如您所说,它们不会改变。然后,该方法将类似于创建Labels

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工作表对标签进行样式设置。因此,您将不再需要所有样式代码。由于您总是有一组需要执行相同操作的标签,因此请执行1)来寻址该组(数组,列表,...)

© www.soinside.com 2019 - 2024. All rights reserved.