我为Labels创建了自定义类,它可以正常工作,但我想要的是。 每当我从该类创建实例时,都必须创建标签而无需额外的可返回方法。
请看我的代码
class CustomLabel {
private JLabel customLabel;
public CustomLabel() {
createLabel();
}
private void createLabel() {
customLabel = new JLabel("Label test");
}
/*
i do not want to return this
*/
public JLabel getLabel() {
return customLabel;
}
}
class Booter {
/*
calling customLabel
*/
void createUI() {
CustomLabel customLabel = new CustomLabel();
JPanel jPanel = new JPanel();
// this is not working
jPanel.add(customLabel);
// but if i call extra method that inside customLabel
// it works fine but i do not want it
jPanel.add(customLabel.getLabel());
//i need to do same like java defined component like.
JLabel label = new JLabel("Test2");
jPanel.add(label); // its is not required getLabel or others
}
}
答案 0 :(得分:2)
为什么不扩展JLabel
class CustomLabel extends JLabel {
public CustomLabel() {
super("Label test");
}
}
class Booter{
/*
calling customLabel
*/
void createUI(){
jPanel.add(new CustomLabel());
}
}
答案 1 :(得分:1)
如果要使用其构造函数直接创建类JLabel
,可以对其进行扩展:
import javax.swing.JLabel;
public class CustomLabel extends JLabel {
public CustomLabel(String text) {
super(text);
}
}
然后在调用代码中,您可以执行以下操作:
class Booter {
void createUI() {
CustomLabel customLabel = new CustomLabel("TEST TEXT");
JPanel jPanel = new JPanel();
JLabel label = new JLabel("Test2");
jPanel.add(customLabel);
jPanel.add(label);
}
}
答案 2 :(得分:0)
使用getLabel()没错。您不能直接在代码中随意添加customLabel,因为customLabel不是组件-它是包含组件的对象。这就是它与getLabel()一起工作的原因,因为该方法仅返回JLabel组件。