Установка приложения широкие Ключевые Слушатели

Вы хотите пахать немного в замечательной работе Paul Stovell относительно подтверждения правильности данных. Он подвел итог своих идей когда-то в эта статья . Я, оказывается, совместно использую его точку зрения по вопросу, который я реализовал в мои собственные библиотеки .

Вот, в словах Paul, недостатках к выдаванию исключения в методах set (на основе образца, где Name свойство не должно быть пустым):

  • могут быть времена, где у Вас на самом деле должно быть пустое название. Например, как значение по умолчанию для "Создают учетную запись" форма.
  • при доверии этому для проверки каких-либо данных перед сохранением, Вы пропустите случаи, где данные уже недопустимы. Этим я имею в виду, если Вы загружаете учетную запись из базы данных с пустым названием и не изменяете ее, Вы никогда не могли бы знать, что это было недопустимо.
  • , Если Вы не используете привязку данных, необходимо записать много кода с try/catch блоки, чтобы показать эти ошибки пользователю. При попытке показать ошибки на форме, поскольку пользователь заполняет его, становится очень трудным.
  • мне не нравится выдавать исключения для неисключительных вещей. Пользователь, определяющий имя учетной записи к , "Supercalafragilisticexpialadocious" не является исключением, это - ошибка. Это - конечно, персональная вещь.
  • Это делает очень трудным получить список всех правил, которые были нарушены. Например, на некоторых веб-сайтах, Вы будете видеть сообщения проверки такой, поскольку "Имя должно быть введено. Адрес должен быть введен. Электронная почта должна быть введена" . Для отображения этого Вы собираетесь нуждаться в большом количестве из try/catch блоки.

И вот основные правила для альтернативного решения:

  1. нет ничего неправильно с наличием недопустимого бизнес-объекта, пока Вы не пытаетесь сохранить его.
  2. Любой и все нарушенные правила должны быть восстановимы от бизнес-объекта, так, чтобы привязка данных, а также Ваш собственный код, видела, существуют ли ошибки и обрабатывают их соответственно.

8
задан Jasper 11 September 2011 в 09:07
поделиться

1 ответ

Ознакомьтесь с разделом Как использовать привязки клавиш в руководстве по Java.

Вам необходимо создать и зарегистрировать Action с помощью компонента ActionMap и регистр пары ( KeyStroke , Action Name ) в одном из компонентов вашего приложения InputMap s. Учитывая, что у вас нет JMenuBar , вы можете просто зарегистрировать привязки клавиш с помощью JPanel верхнего уровня в своем приложении.

Например:

Action action = new AbstractAction("Do It") { ... };

// This is the component we will register the keyboard shortcut with.
JPanel pnl = new JPanel();

// Create KeyStroke that will be used to invoke the action.
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);

// Register Action in component's ActionMap.
pnl.getActionMap().put("Do It", action);

// Now register KeyStroke used to fire the action.  I am registering this with the
// InputMap used when the component's parent window has focus.
pnl.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "Do It");
17
ответ дан 5 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

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