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



因此,我正在构建一个应用程序,通过fxml文件中的pdf文档,将页面上的阿拉伯语文本添加为图像,并添加标签,以便向右滑动时可以看到英文翻译,向左滑动时可以看到阿拉伯语。我知道会有800多页的阿拉伯语文本,标签数量会增加一倍,你会推荐一种更可重复使用的方法来实现这一点吗?

我的代码是针对我添加的10个标签的,我希望文本更改为:

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

即使使用下面的代码,当我运行它时,我也会看到,一旦你点击一次,所有标签都会以英语显示,所以即使是这个,我也需要添加单独的方法。。但我希望有人能帮助我,并推荐一种使用一种方法的解决方案,这种方法对一个页面中的所有10个标签都是完全可重复使用的。如果我们必须改变任何事情,我们可以在一个本地化的位置改变。

我是开发新手,我是一名自动化硒工程师,所以我从测试的角度理解可恢复性,但对开发来说是新手。

请帮忙。

感谢

@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( 您可以使用一种方法,通过样式等来构造标签。然后,您可以使用循环来创建标签或设置标签样式,并且可以将它们存储在数组或列表中。

对于这个解决方案,我建议将Font和Style保存在类变量(字段(中,正如您所说,它们不会更改。然后,创建标签的方法是这样的

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());

然后可以对数组(或List(进行迭代以更改文本。您还可以创建简单的方法来为所有标签执行所需的操作,并在simple for或for每个循环中调用这些方法。

2( 当您使用某个样式时,您可以将Label子类化,然后可以使用css表对标签进行样式设置。因此,您不再需要所有的样式代码。由于您总是有一组标签需要获得相同的操作,请选择1(来寻址组(数组、列表…(

相关内容

  • 没有找到相关文章

最新更新