Можно ли создать собственную версию jbutton, чтобы ограничить доступ к определенным методам? - PullRequest
0 голосов
/ 03 июля 2019

Можно ли создать собственную версию компонента свинга, скажем, jbutton, которая ограничивает доступ к определенным методам jbutton?

Я хочу иметь кнопку j (или различные элементы свинга), в которой я определяю определенныеэлементы, которые не могут быть изменены и уверены, что могут.Используя в качестве примера jbutton, я бы хотел, чтобы пользователь класса мог добавить текст или изображение к кнопке, включить или отключить ее, задать размер и т. Д., Но я хочу определить внешний вид кнопки ине изменяйте это.

Если я расширяю jbutton, используя свой собственный класс, я могу переопределить только каждый метод, который не хочу изменять, с неподдерживаемым исключением.Если я расширю J-компонент, мне придется переписать в основном весь J-Button.Есть ли лучший способ?

Я спрашиваю, потому что мы делаем набор пользовательских компонентов J, которые клиенты могут использовать для создания экранов hmi.Мы хотим ограничить количество элементов на основе нашего внешнего вида и стандартов HMI.

1 Ответ

2 голосов
/ 03 июля 2019

Вы можете продлить 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()) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...