Задача HTML Editor (12)
12.1. Напиши реализацию класса RedoAction:
12.1.1. Добавь в класс поле View. Добавь его инициализацию в конструкторе.
12.1.2. Реализуй метод actionPerformed(ActionEvent actionEvent), он должен вызывать метод redo() у представления.
12.2. Напиши реализацию класса UndoAction по аналогии с RedoAction.
12.3. Изучи реализацию класса StrikeThroughAction, которую ты получил вместе с заданием и реализуй аналогичным образом классы:
12.3.1. SubscriptAction
12.3.2. SuperscriptAction
Запусти программу и убедись, что пункты меню Подстрочный знак, Надстрочный знак и Зачеркнутый работают.
Пункты, отвечающие за отмену и возврат действия пока не подключены к контроллеру и мы не сможем их проверить.
Вопрос про классы SuperscriptAction, SubscriptAction, StrikeThroughAction которые extends StyledEditorKit.StyledTextAction.
Эти классы создаются в классе MenuHelper:
public static void initStyleMenu(View view, JMenuBar menuBar) {
JMenu styleMenu = new JMenu("Стиль");
menuBar.add(styleMenu);
addMenuItem(styleMenu, "Полужирный", new StyledEditorKit.BoldAction());
addMenuItem(styleMenu, "Подчеркнутый", new StyledEditorKit.UnderlineAction());
addMenuItem(styleMenu, "Курсив", new StyledEditorKit.ItalicAction());
styleMenu.addSeparator();
addMenuItem(styleMenu, "Подстрочный знак", new SubscriptAction());
addMenuItem(styleMenu, "Надстрочный знак", new SuperscriptAction());
addMenuItem(styleMenu, "Зачеркнутый", new StrikeThroughAction());
styleMenu.addMenuListener(new TextEditMenuListener(view));
}
В этих классах мы реализовали методЖ
@Override
public void actionPerformed(ActionEvent e) {
JEditorPane editor = getEditor(e);
if (editor != null) {
MutableAttributeSet mutableAttributeSet = getStyledEditorKit(editor).getInputAttributes();
SimpleAttributeSet simpleAttributeSet = new SimpleAttributeSet();
StyleConstants.setSuperscript(simpleAttributeSet, !StyleConstants.isSuperscript(mutableAttributeSet));
setCharacterAttributes(editor, simpleAttributeSet, false);
}
}
Но этот метод нигде не вызывается, но все корректно работает. Объясните как это получается?))
Артем
41 уровень
Объясните пожалуйста.
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Баба-Яга
21 февраля 2022, 15:22
Вы задали не простой вопрос. В общем виде: мы extended столько классов: вся магия там!
Метод actionPerformed - это метод ActionListener.
Вот я нашла несколько абзацев про это:
https://java-online.ru/java-listener.xhtml
Но полного понимания вопроса у меня пока нет
Вы можете поискать информацию сами
0