我有很多复选框,所有这些复选框都依赖于某个未选中的框,但如果确实选中了该框,则必须选中并隐藏该框。我知道人们一直在说 ArrayList,但是我不知道如何编辑 ArrayList 中项目的某些属性的语法。
我的代码有效,我只需要这段代码更短,因为我相信如果它继续这样运行,最终会减慢进程,我想了解这对于我拥有的其他对象是如何工作的做同样的事情。
public void cbxSalesSelectA() {
boolean t = cbx_SALES_Select_All.getText().equals("Select All");
cbx_SALESQtySold.setSelected(t);
cbx_SALESDateSold.setSelected(t);
cbx_SALESCustomer.setSelected(t);
cbx_SALESDiscount.setSelected(t);
cbx_SALESLineNumber.setSelected(t);
cbx_SALESConsultant.setSelected(t);
cbx_SALES_Header_Row.setSelected(t);
if (t) {
cbx_SALES_Select_All.setText("Deselect All");
} else {
cbx_SALES_Select_All.setText("Select All");
}
}
public void cbxLOCSelectA() {
boolean t = cbx_LOC_Select_All.getText().equals("Select All");
cbx_LOCHeight.setSelected(t);
cbx_LOCWidth.setSelected(t);
cbx_LOCDepth.setSelected(t);
cbx_LOCWeightCap.setSelected(t);
cbx_LOCAccessibility.setSelected(t);
cbx_LOC_Header_Row.setSelected(t);
if (t) {
cbx_LOC_Select_All.setText("Deselect All");
} else {
cbx_LOC_Select_All.setText("Select All");
}
}
最佳答案
我不认为你真的可以提高代码的性能,但为了可读性,你可以在单独的方法中更改 selected
。例如
static void allSetSelected(boolean isSelected, CheckBox... boxes ) {
Arrays.stream(boxes).forEach(b -> b.setSelected(isSelected));
}
并在代码中使用它,如下所示
public void cbxSalesSelectA() {
boolean t = cbx_SALES_Select_All.getText().equals("Select All");
allSetSelected(t, cbx_SALESQtySold,
cbx_SALESDateSold,
cbx_SALESCustomer,
cbx_SALESDiscount,
cbx_SALESLineNumber,
cbx_SALESConsultant,
cbx_SALES_Header_Row)
if (t) {
cbx_SALES_Select_All.setText("Deselect All");
} else {
cbx_SALES_Select_All.setText("Select All");
}
}
public void cbxLOCSelectA() {
boolean t = cbx_LOC_Select_All.getText().equals("Select All");
allSetSelected(t, cbx_LOCHeight, cbx_LOCWidth, cbx_LOCDepth, cbx_LOCWeightCap, cbx_LOCAccessibility, cbx_LOC_Header_Row);
if (t) {
cbx_LOC_Select_All.setText("Deselect All");
} else {
cbx_LOC_Select_All.setText("Select All");
}
}
关于java - 有没有办法缩短由于对象属性相似而重复的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922118/