我有10 JLabels
,我想要有相同的边框。这是一个可手动管理的数字,但要成为一名程序员,我想知道是否有办法让这更容易。将边框分配给多个JLabels
我已经尝试了每个循环,确保标签所在的面板的所有组件都正确,然后使用方法setBorder(...)
。但是这不起作用,因为这些对象被识别为组件而不是JLabel。
如何自动将边框分配到JLabel
?
我有10 JLabels
,我想要有相同的边框。这是一个可手动管理的数字,但要成为一名程序员,我想知道是否有办法让这更容易。将边框分配给多个JLabels
我已经尝试了每个循环,确保标签所在的面板的所有组件都正确,然后使用方法setBorder(...)
。但是这不起作用,因为这些对象被识别为组件而不是JLabel。
如何自动将边框分配到JLabel
?
由@Atreys提供的答案就足够了,但有不止一种方法来皮肤一只猫。另一个选择是创建一个扩展类JLabel
并在其构造函数中分配一个边界。因此,根据您的请求,所有实例都具有相同的边框。这也避免了笨拙地迭代Component
的集合,使用instanceof
运算符,然后进行类型转换,这不是真正的OOP。
public final class BorderedJLabel extends JLabel{
public BorderedJLabel(){
// assign border
}
}
如果你想避免为每个新BorderedJLabel
键入实例new BorderedJLabel()
的详细程度,你可以仔细阅读一个静态工厂方法,这样
public final class BorderedJLabel extends JLabel{
private BorderedJLabel(){
// assign border
}
public static final BorderedJLabel newInstance(){
return new BorderedJLabel();
}
}
给予在此设计中,您只需键入BorderedJLabel.newInstance()
即可更简洁地创建新的BorderedJLabel
实例。
对于想要构建JLabel的每种方式,您都需要添加一个合适的方式来构建MyJLabel。这将是解决问题的更多OOP方法,但可能需要更多工作,并且如果您忘记了您拥有MyJLabel类,并且错误地使用了JLabel,那么您将无法获得边界集。 – Atreys
+1:这种方法可以让你在组件上拥有无边界的JLabel。 – pmnt
正确的建议+1 – mKorbel