是否可以创建自定义版本的 jbutton 来限制对某些方法的访问?



是否可以创建一个自定义版本的摆动组件,比如jbutton,限制对jbutton某些方法的访问?

我想要一个jbutton(或各种摆动元素),在其中我定义某些无法更改的元素和某些可以更改的元素。以jbutton为例,我想允许类的用户向按钮添加文本或图像,设置启用或禁用或设置大小等,但我想定义按钮的外观而不是修改。

如果我使用自定义类扩展 jbutton,我只能使用不受支持的异常覆盖我不想修改的每个方法。如果我扩展 J 组件,我将不得不重写基本上所有 jbutton。有没有更好的方法?

我问是因为我们正在制作一组自定义 J 组件,客户端可以使用这些组件来构建 hmi 屏幕。我们希望根据我们的外观和感觉以及 HMI 标准来限制元素。

您可以延长JPanel或包装按钮(甚至两者兼而有之)。

第一个变体

public class MyButton extends JPanel {
private JButton button = new JButton();
public MyButton() {
init();
}
// probably some another constructors.
private void init() {
setLayout(new GridLayout()); // button take the entire place of the panel
add(button);
}
public void setText(String text) {
button.setText(text);
}
}

第二个变体:

public class MyButton {
private JButton button = new JButton();
public MyButton() {
}
// probably some another constructors.
public JComponent getComponent() {
return button;
}
public void setText(String text) {
button.setText(text);
}
}

这两种变体都允许您隐藏受限制的功能,而无需重新实现 JButton 或在重写方法中抛出异常。您还可以将这两个变体或每个变体与受限方法的抛出异常组合在一起(这可能很有趣,因为一些有经验的开发人员可以通过强制转换来JButton访问对象JButton方法的结果getComponent())。

最新更新