Организация действий в приложении Swing?

Используйте ticks в xAxes.

xAxes: [{
            ticks: {
            fontStyle: "bold"
            }
            }]
7
задан Allain Lalonde 15 January 2009 в 19:44
поделиться

3 ответа

Если возможно, что Ваши действия могли быть допускающими повторное использование (например, от сочетаний клавиш, других меню, других диалоговых окон, и т.д.) и особенно если они могут работать непосредственно над базовой моделью (а не над UI), то обычно лучше не иметь их как анонимные классы.

Скорее создайте отдельный пакет и создайте классы для каждого.

Часто, также имеет смысл не инстанцировать их непосредственно, а скорее иметь своего рода менеджер, который определяет константы и инициализирует и возвращает наборы действий, так, чтобы Вы могли, например, предложить различные наборы действия в различных версиях или установить определенные действия только для внутренних выпусков.

Наконец, проверьте, могут ли Ваши действия быть пересмотрены в иерархию классов. Они часто могут, который сохраняет репликацию кода и также помогает Вам добавить устойчивость (например, проверьте на определенные условия прежде, чем позволить действию выполниться).

8
ответ дан 6 December 2019 в 15:32
поделиться

Это обычно, как я делаю это. Каждое действие получает свой собственный класс, который имеет ссылку на объект "приложения", таким образом, это может добраться до ресурсов, в которых это нуждается. У меня обычно есть менеджер по действию, который держит все действия, таким образом, существует одно место для доступа к ним, а также одному месту для обновления их реализации возможностей и материала.

В конечном счете это также становится неуправляемым, в которой точке необходимо начать думать об использовании платформы приложения как Eclipse RCP, платформа NetBeans, JIDE, и т.д. Это особенно верно, если Вы хотите поддерживать пользовательские контурные карты и материал как этот.

4
ответ дан 6 December 2019 в 15:32
поделиться

То, что я делаю, создают пакет (дерево пакета на самом деле) для классов действия, затем инстанцируют каждого класса согласно контексту. Почти все мои классы действия абстрактны с абстрактными методами получить контекст (Spring крыла).

public abstract class CalcAndShowAction extends AbstractAction {
    //initialization code - setup icons, label, key shortcuts but not context.

    public void actionPerformed(ActionEvent e) {
        //abstract method since it needs ui context
        String data = getDataToCalc();

        //the actual action - implemented in this class, 
        //  along with any user interaction inherent to this action
        String result = calc(data);  

        //abstract method since it needs ui context
        putResultInUI(result);
    }
    //abstract methods, static helpers, etc...
}

//actual usage
//...
button.setAction(new CalcAndShowAction() {
    String getDataToCalc() {
        return textField.getText();
    }

    void putResultInUI(String result) {
        textField.setText(result);
    }
});
//...

(жаль о любых ошибках, я записал это вручную в этом текстовом поле, не в IDE).

2
ответ дан 6 December 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: