首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以创建自定义版本的jbutton来限制对某些方法的访问?

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

Stack Overflow用户
提问于 2019-07-03 08:36:17
回答 1查看 42关注 0票数 0

有没有可能创建一个自定义版本的swing组件,比如jbutton,来限制对某些jbutton方法的访问?

我想要有一个jbutton (或各种swing元素),在这里我定义了一些不能改变的元素和可以改变的元素。以jbutton为例,我希望允许类的用户向按钮添加文本或图像,设置其启用或禁用,或设置大小等,但我希望定义按钮的外观,而不是进行修改。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 14:37:56

你可以扩展一个JPanel或者包装你的按钮(或者这两者都有)。

第一个变体

代码语言:javascript
复制
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);
    }
}

第二个变体:

代码语言:javascript
复制
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或在覆盖的方法中抛出异常。您还可以将这两种变体或其中的每一种变体与抛出受限方法的异常结合起来(这可能很有趣,因为一些有经验的开发人员可以通过将方法getComponent()的结果转换为JButton来访问getComponent()对象)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56861519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档