Java 将边框指定给多个jlabel

Java 将边框指定给多个jlabel,java,swing,border,jlabel,Java,Swing,Border,Jlabel,我有10个jlabel,我希望它们具有相同的边框。这是一个可以手动管理的数字,但作为一名程序员,我想知道是否有办法让这变得更容易 我尝试了一个for-each循环,使标签所在面板的所有组件都成为现实,然后使用方法setboorder(…)。但这显然不起作用,因为对象被识别为组件而不是jlabel 如何自动将边框指定给JLabel 听起来你几乎找到了解决办法 迭代面板的所有组件,如果其中一个是JLabel,则强制转换它并设置边框: for (Component comp : componentLi

我有10个
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();
    }
}