gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:26:21 24 4
gpt4 key购买 nike

是否可以创建一个自定义版本的 swing 组件(例如 jbutton)来限制对 jbutton 某些方法的访问?

我想要一个 jbutton(或各种 swing 元素),在其中定义某些不能更改的元素和某些可以更改的元素。以 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() 的结果)。

关于java - 是否可以创建 jbutton 的自定义版本来限制对某些方法的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56861519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com