Java 将边框指定给多个jlabel
我有10个Java 将边框指定给多个jlabel,java,swing,border,jlabel,Java,Swing,Border,Jlabel,我有10个jlabel,我希望它们具有相同的边框。这是一个可以手动管理的数字,但作为一名程序员,我想知道是否有办法让这变得更容易 我尝试了一个for-each循环,使标签所在面板的所有组件都成为现实,然后使用方法setboorder(…)。但这显然不起作用,因为对象被识别为组件而不是jlabel 如何自动将边框指定给JLabel 听起来你几乎找到了解决办法 迭代面板的所有组件,如果其中一个是JLabel,则强制转换它并设置边框: for (Component comp : componentLi
jlabel
,我希望它们具有相同的边框。这是一个可以手动管理的数字,但作为一名程序员,我想知道是否有办法让这变得更容易
我尝试了一个for-each循环,使标签所在面板的所有组件都成为现实,然后使用方法setboorder(…)
。但这显然不起作用,因为对象被识别为组件而不是jlabel
如何自动将边框指定给
JLabel
听起来你几乎找到了解决办法
迭代面板的所有组件,如果其中一个是JLabel,则强制转换它并设置边框:
for (Component comp : componentList) {
if (comp instanceof JLabel) {
((JLabel)comp).setBorder(myBorder());
}
}
由提供的答案就足够了,但是给猫剥皮的方法不止一种。另一个选项是创建一个扩展JLabel
的类,并在其构造函数中指定一个边框。因此,根据您的请求,所有实例都将具有相同的边界。这也将避免笨拙地迭代组件的集合,使用instanceof
操作符,然后使用typecast,这不是真正的OOP
增编:
如果您想避免为每个新的BorderedJLabel
实例键入newborderedjlabel()
这样的冗长,您可以仔细阅读静态工厂方法
考虑到这种设计,只需键入BorderedJLabel.newInstance()
啊,演员阵容当时缺失,就可以更简洁地创建新的BorderedJLabel
实例。非常感谢你!我也喜欢你的答案,因为你给了我我最初想要修复它的方法中缺失的部分。对于你想要构建一个JLabel的每一种方法,你都需要添加一种合适的方法来构建一个MyJLabel。这将是一种更为面向对象的解决问题的方法,但可能需要更多的工作,如果您忘记使用MyJLabel类,并且“错误地”使用JLabel,您将无法获得边框集。+1:这种方法允许您在组件上也有未排序的JLabel
s。这确实是一种更好的方法,我将使用这个类,因为它更面向对象。+1这是一个用于子类化的教科书案例,尽管我可以恭敬地建议该类称为BorderedJLabel
。创建所有构造函数需要在Eclipse创建类向导上单击“从超类创建构造函数”。
public final class BorderedJLabel extends JLabel{
public BorderedJLabel(){
// assign border
}
}
public final class BorderedJLabel extends JLabel{
private BorderedJLabel(){
// assign border
}
public static final BorderedJLabel newInstance(){
return new BorderedJLabel();
}
}