无论如何最小化代码行数以实现相同的目标
L1.setFont(new Font("Serief", Font.BOLD, 24));
L2.setFont(new Font("Serief", Font.BOLD, 24));
L3.setFont(new Font("Serief", Font.BOLD, 24));
L4.setFont(new Font("Serief", Font.BOLD, 24));
L5.setFont(new Font("Serief", Font.BOLD, 24));
L6.setFont(new Font("Serief", Font.BOLD, 24));
L7.setFont(new Font("Serief", Font.BOLD, 24));
L8.setFont(new Font("Serief", Font.BOLD, 24));
答案 0 :(得分:23)
你可以做到
Stream.of(L1, L2, L3, L4, L5, L6, L7, L8).forEach(l -> l.setFont(serif));
在Java 8中,您可以编写
Sheet1
答案 1 :(得分:4)
其他答案都是正确的,但它们将您的设计问题视为给定。简单地说:我认为这是错误的。
重点是:一旦开始命名变量,如L1,L2,L3,......你正在做一些非常错误的事情。特别是当您的下一个想法是编写处理L1的特定代码和处理L2的代码时;等等。也许其他答案可以帮助您修复此部分代码。但迟早,你会有许多不足的代码;所有人都以自己的方式处理那些Lx家伙。或者甚至不是那些标签,在这个程序中。但是你开始的其他一些代码却以低效的方式组织你的(UI)元素。
真正的解决方案:你应该使用某种收集机制; List;或者也许是一个普通的旧阵列。因为那时你可以迭代该集合,并且具有完全一个代码行,以同样的方式设置该集合中的所有元素。
或者相反:您查询包含其元素的所有标签的面板;如果元素与某个条件匹配,则根据需要更新其属性。如果您遵循该路径,您甚至可能不必在您自己的代码中保留对您的元素的任何引用&#34 ;;你只需使用已经存在的手段;并且可以像this一样简单。
我在说什么:其他解决方案中的所有好主意,但我认为它们走向了错误的方向。他们试图用好的想法修复破碎的apprach。要关注现在非常着名的mem:考虑这样的UI元素是牛,而不是宠物。含义:它们仅仅是数字"对您进行整理,以便能够以有效的方式(宠物)将整体作为个人,具有名称并作为& #34;单个实体"大部分时间。)
但只是添加我的简短版本;彼得的解决方案略有不同:
for (JLabel l : Arrays.asList( L1, L2, L3, L4, L5, L6, L7, L8 ))
也可以。
答案 2 :(得分:2)
归结为...... 4行; - )
setFont(new Font("Serief", Font.BOLD, 24), L1, L2, L3, L4, L5, L6, L7, L8);
private void setFont(Font font, Object... objects){
for(Object object : objects){
object.setFont(font);
}
}
正如Hulk的评论中指出的那样,您应该将Object
替换为您正在呼叫setFont
的任何课程。
请记住,无论何时看到重复代码,您都可以经常用方法调用替换它。以下是有关重复代码错误原因的更多信息:https://en.wikipedia.org/wiki/Duplicate_code
答案 3 :(得分:2)
是创建一个名为setFont(Object ... values)的方法,并传递您需要设置字体的任意数量的对象。 以下是 JLabel 对象的示例。
void setFont(JLabel... jLabels){
for(JLabel jLabel : jLabels){
jLabel.setFont(new Font("Serif", Font.BOLD, 24));
}
}
您可以将其称为
setFont(L1,L2,L3,L4); //any number of arguments