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

因此,我正在构建一个应用程序,其中我在整个页面上都通过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",10));

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

    invisiblelabelpg2label3.setStyle("-fx-background-color: linear-gradient(#86C1B9,#7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label3.setText("The Most Merciful");
    invisiblelabelpg2label3.setfont(Font.font("Comic Sans",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",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",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",10));

    invisiblelabelpg2label7.setStyle("-fx-background-color: linear-gradient(#86C1B9,#7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label7.setText("The Path");
    invisiblelabelpg2label7.setfont(Font.font("Comic Sans",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",10));

    invisiblelabelpg2label9.setStyle("-fx-background-color: linear-gradient(#86C1B9,#7CAFC2); -fx-background-: 40;");
    invisiblelabelpg2label9.setText("Not those");
    invisiblelabelpg2label9.setfont(Font.font("Comic Sans",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",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);


}

}

qqq691608414 回答:Javafx更可重用,可在一页上单击和更改30个标签的文本

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

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

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

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)来寻址该组(数组,列表等)

本文链接:https://www.f2er.com/2395446.html

大家都在问