我有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