Раздельная обработка одиночного и двойного клика мыши в swing


Содержание

Блог только про Java

Учимся программировать на Java с нуля

Обработка событий от мыши Java

Чтобы обработать события от мыши, следует реализовать интерфейсы MouseListener и MouseMotionListener. Можно было бы также реализовать ин­терфейс MouseWheelListener, но мы не станем здесь этого делать.

Весь процесс обработки событий от мыши демонстрируется в приведенном ниже примере апле­та. В строке состояния окна этого аплета выводятся текущие координаты мыши.

Всякий раз, когда нажимается кнопка мыши, на месте курсора мыши появляется слово «Down»(Нажато). И всякий раз, когда кнопка мыши отпускается, слово «Up» (Отпущено) . А если производится щелчок кнопкой мыши, то в левом верх­нем углу области отображения аплета выводится сообщение «Mouseclicked» (Произведен щелчок кнопкой мыши ).

Когда же курсор мыши наводится на окно аплета или отводится от него, то в ле­вом верхнем углу области отображения аплета также выводится соответствующее сообщение. При перетаскивании курсора мыши выводится символ *, сопровожда­ющий курсор мыши.

Обратите внимание на то, что в двух переменных, mouseX и mouseY, сохраняются координаты местоположения курсора мыши, когда проис­ходят события нажатия и отпускания кнопки мыши, а также события перетаски­вания. Эти координаты затем используются методом paint() для вывода соответ­ствующего сообщения в той точке, где возникает событие.

Собственно весь код нашей программы:

Пример выполнения данного аплета приведен на рис. 1.

Рис. 1. Пример выполнения аплета, в котором обрабатываются события мыши

Рассмотрим данный пример аплета более подробно. В частности, класс MouseEvents расширяет класс Applet и реализует интерфейсы MouseListener и MouseMotionListener.

Оба эти интерфейса содержат методы, принимающие и обрабатывающие различные типы событий от мыши. Обратите внимание на то, что аплет одновременно является источником и приемником этих событий. И это вполне допустимо, поскольку класс Component, предоставляющий методы addMouseListener() и addMouseMotionListener(), служит суперклассом для клас­са Аррlеt. Вообще, использование одного и того же объекта в качестве источника и приемника событий характерно для аплетов.

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

В методе init() аплет регистрирует себя в качестве приемника событий от мыши. Это делается с помощью методов addMouseListener() и addMouseMotionListener(), которые, как упоминалось ранее, являются членами класса Component. Ниже приведены общие формы этих методов:

Здесь параметр ml обозначает ссылку на объект, принимающий события от мыши, а параметр mml ссылку на объект, принимающий события перемеще­ния мыши. В рассматриваемом здесь примере аплета оба эти метода принимают в качестве параметра один и тот же объект.

Далее в данном примере аплета реализуются все методы, определенные в интер­фейсах MouseListener и MouseMotionListener, т.е. обработчики разных событий от мыши. Каждый из них обрабатывает свое событие, а затем возвращает управление.

Двойной клик мыши

В этом уроке расскажу как добавить и убрать двойной клик мыши.

Как сделать двойной клик мыши

Сделать это очень просто. Заходим в любую из папок на компьютере. В верхнем меню переходим в «Файл -> Изменить параметры папок и поиска».

Это что касается Windows 10. В предыдущих версиях Windows вместо этого пункта будет «Упорядочить -> Изменить параметры папок и поиска».

Если вы не ищите легкий путей, то можно зайти в «Панель управления», далее в режиме просмотра по категориям зайти в «Оформление и персонализация» и перейти по ссылке «Параметры проводника» (Параметры папок).

Все это приведет к открытию нового окна, где на вкладке «Общие» в блоке «Щелчки мыши» нужно просто поменять настройку на «Открывать одним щелчком, выделять указателем».

Дополнительные настройки «Подчеркивать подписи значков» и «Подчеркивать подписи значков при наведении» отвечают за подчеркивание имени файлов и папок. В первом случае оно будет всегда, а во втором только при наведении курсора мыши.

Теперь, чтобы выбрать файл или папку достаточно просто навести на них курсор мыши, а чтобы открыть или запустить, нужно кликнуть всего лишь один раз вместо двух.

Как убрать двойной клик мыши

Для того, чтобы все вернуть как было, нужно в настройках щелчка мыши выбрать пункт «Открывать двойным, а выделять одним щелчком». Т.е. опять заходим в «Файл -> Изменить параметры папок и поиска» (Упорядочить) и выбираем нужный пункт.

Все станет работать по старому. Двойной клик вместо одного будет открывать папки и файла, а один клик их просто выбирать.


Бывают такие случаи, когда данные манипуляции не помогают и на компьютере все равно остается одинарный клик мыши вместо двойного. Чтобы избавиться от этого можно попробовать удалить устройство с компьютера. Щелкаем на иконке «Мой компьютер» правой клавишей мыши и заходим в «Свойства».

В новом окне переходим по ссылке «Диспетчер устройств». Далее открываем ветвь с мышью и, кликнув правой клавишей мыши по устройству, выбираем «Удалить».

После этого полностью перезагружаем компьютер. При загрузке Windows устройство должно быть установлено по новой.

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

Лучшая практика для сотовых Editing (Single-Click или двойным щелчком мыши) в таблице в свинг

December 2020

929 раз

Я хочу задать несколько вопросов относительно редактирования ячейки таблицы.

В настоящее время моя практика делает редактирование ячейки в таблице, дважды щелкнув ячейку , чтобы сделать ячейку редактирования для ввода текста. Для одного щелчка, он будет выбирать вместо строки. Это так же , как поведение Excel редактирования ячейки. То , что я вижу в некоторых из Jide демо , некоторые таблицы могут быть доступны для редактирования с помощью одного щелчка , такие как «EditableTableHeaderDemo» , и некоторые из них могут быть доступны для редактирования с помощью двойного щелчка , такие как JideTableDemo.

То, что я хочу знать, здесь лучшие практики редактирования ячейки в таблице, является ли это одиночный щелчок или двойной щелчок? Есть ли какие-либо проблемы, если мы используем двойной щелчок для редактирования таблицы по сравнению с одним нажатием кнопки для редактирования таблицы? С точки зрения удобства для пользователя, удобство использования и взаимодействия компьютера человека, который один лучше?

Практическое руководство. Распознавание одиночных и двойных щелчков How to: Distinguish Between Clicks and Double-Clicks

Как правило, одиночное событие щелчок инициирует действие пользовательского интерфейса, а событие двойной щелчок расширяет его. Typically, a single click initiates a user interface (UI) action and a double-click extends the action. Например, одним щелчком мыши обычно выбирается элемент, а двойным щелчком мыши этот элемент изменяется. For example, one click usually selects an item, and a double-click edits the selected item. Однако события щелчков Windows Forms непросто приспособить к сценарию, в котором щелчок и двойной щелчок выполняют несовместимые действия, поскольку действие, привязанное к событию Click или MouseClick, выполняется перед действием, привязанным к событию DoubleClick или MouseDoubleClick. However, the Windows Forms click events do not easily accommodate a scenario where a click and a double-click perform incompatible actions, because an action tied to the Click or MouseClick event is performed before the action tied to the DoubleClick or MouseDoubleClick event. В этом разделе показаны два способа решения этой проблемы. This topic demonstrates two solutions to this problem. Одним из решений является обработка события двойного щелчка и откат действий при обработке события щелчка. One solution is to handle the double-click event and roll back the actions in the handling of the click event. В редких случаях может потребоваться имитировать поведение при одинарном и двойном щелчке при обработке событий MouseDown и с помощью свойств DoubleClickTime и DoubleClickSize класса SystemInformation. In rare situations you may need to simulate click and double-click behavior by handling the MouseDown event and by using the DoubleClickTime and DoubleClickSize properties of the SystemInformation class. Производится измерение времени между щелчками мышью и, если второе нажатие происходит до того, как DoubleClickTime достигнет значения и кнопка мыши была нажата, когда курсор находился в прямоугольнике, заданном DoubleClickSize, то выполняется действие двойного щелчка; в противном случае выполняется действие щелчка. You measure the time between clicks and if a second click occurs before the value of DoubleClickTime is reached and the click is within a rectangle defined by DoubleClickSize, perform the double-click action; otherwise, perform the click action.

Илон Маск рекомендует:  Что такое код fdf_save

Выполнение отката щелчка кнопкой мыши To roll back a click action

Убедитесь, что элемент управления, с которым вы работаете, имеет стандартное поведение при двойном щелчке мышью. Ensure that the control you are working with has standard double-click behavior. В противном случае задействуйте элемент управления с помощью метода SetStyle. If not, enable the control with the SetStyle method. Обработайте событие двойного щелчка и откат к одиночному щелчку кнопкой мыши, а также действие двойного щелчка. Handle the double-click event and roll back the click action as well as the double-click action. В следующем примере кода показано, как создать пользовательскую кнопку с включенным двойным щелчком мыши, а также как откатить к одиночному щелчку в коде обработки событий двойного щелчка. The following code example demonstrates a how to create a custom button with double-click enabled, as well as how to roll back the click action in the double-click event handling code.

Различение щелчков в событии MouseDown To distinguish between clicks in the MouseDown event

Обработайте событие MouseDown и определите расположение и временной интервал между щелчками с помощью соответствующего свойства SystemInformation и компонента Timer. Handle the MouseDown event and determine the location and time span between clicks using the appropriate SystemInformation properties and a Timer component. Выполните необходимые действия в зависимости от того, имеет ли место щелчок или двойной щелчок кнопкой мыши. Perform the appropriate action depending on whether a click or double-click takes place. В следующем примере кода показано, как это сделать. The following code example demonstrates how this can be done.

Компиляция кода Compiling the Code

Для этих примеров требуются: These examples require:

Создайте событие двойного щелчка мыши в Java Swing

Я пытаюсь сгенерировать событие двойного щелчка мыши на EDT следующим образом:

Похоже, что это не отправляет событие двойного щелчка, хотя я устанавливаю количество кликов равным 2.

Есть предложения или примеры?

2 ответа

Принимая во внимание:

Когда я нажимаю fireEventButton MouseEvent правильно отправляется на clickTwiceButton , и диалоговое окно появляется, как и ожидалось.

Итак, как заметил @Andrew, проблема, похоже, в том, что вы либо MouseListener событие в неправильном компоненте, либо в том, что что-то не так с зарегистрированным MouseListener / MouseAdapter .

Как сделать двойной щелчок мыши одинарным и наоборот

Выпить чай или кофе? А с какими печеньками? Дело вкуса — дело тонкое. Сегодня говорим о щелчках мыши. Кому-то нравится нажимать два раза, чтобы открыть файл или папку, а кто-то предпочтет нажать всего раз и Windows предоставляет нам такую возможность.

Прежде всего, где найти эту опцию, куда проследовать? Идем по пути:


  • «Пуск» — «Панель управления» — «Параметры папок» (или «Свойства папки»)

Итак, чтобы первым щелчком на папке или файле его выделить, а вторым открыть сделайте следующее:

  • Открываем «Параметры папок«. Как это делается вы читали в данной статье, выше.
  • Выбираем пункт «Открывать двойным, а выделять одним щелчком» ( 1 )

Чтобы при наведении курсора на папку или файл его выделить, а щелчком открыть:

  • Выбираем пункт «Открывать одним щелчком, выделять указателем» ( 2 )

Вот и все премудрости. Всего доброго, не забудьте подписаться на обновления блога.

Что делать, если мышь делает двойной клик вместо одинарного

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

Содержание

Причины

Износ микропереключателя

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

Программная проблема

Двойной щелчок вместо одинарного не обязательно связан с неисправностью мыши. Это может быть чисто программная проблема с драйверами или дополнительным программным обеспечением.

Чтобы определить, в чем причина в вашем случае, попробуйте подключить мышь к другому компьютеру или ноутбуку. Если симптомы сохранятся, то дело, очевидно, в микропереключателе.

Решения

Решение при проблеме с драйверами

Если у вас Windows, этот способ может помочь: через «Панель управления» найдите мышь в списке устройств, удалите ее оттуда и перезагрузитесь. После этого мышь должна подключиться заново. Возможно, проблема с двойными кликами исчезнет (маловероятно).

Программные решения при износе микропереключателя

MouseFix

Существует чисто программное решение, помогающее при дребезге контактов в микропереключателе: утилита Дэниела Джексона MouseFix (для Windows). Она перехватывает клики, произошедшие через очень короткое время после первого, так как такие клики могут быть связаны только с дребезгом контактов в микропереключателе. Эту утилиту можно использовать хотя бы как временное решение.

  1. Скачайте утилиту MouseFix и распакуйте ее в отдельную папку.
  2. В папке «Все программы → Автозагрузка» создайте ярлык, указывающий на MouseFix.exe.
  3. Выйдите из системы и войдите заново (или просто запустите утилиту вручную в первый раз).

Left Mouse Button Fix


Существует также утилита Left Mouse Button Fix, фильтрующая ошибочные двойные клики аналогичным образом.

Ремонт микропереключателя

Учтите, что самостоятельный ремонт лишает вас гарантии на мышь. Кроме того, ремонт, описанный ниже, подразумевает работу с очень мелкими деталями, которые легко сломать — ответственность за это несете только вы. Срок службы микропереключателя, продленный описанным способом, также ограничен (один из практикующих этот способ сообщает, что повторяет процедуру с мышью Logitech через полгода-год).

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

Форум

Справочник

Поиск по форуму
Расширенный поиск
К странице.

События мыши: последовательность наступления

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

Илон Маск рекомендует:  EncodeDateTime - Функция Delphi

К разным кнопкам браузеры привязывают свои собственные «действия по-умолчанию», например — Firefox при клике на среднюю кнопку мыши открывает новую вкладку.
В зависимости от браузера, для каких-то кнопок действия по-умолчанию можно отменять, а для каких-то — нельзя.

Виды кликов-событий

Самое известное событие — onclick. Более полный список:

mousedown Нажатие на кнопку мыши mouseup Нажатая кнопка мыши отпущена click Клик мыши dblclick Двойной клик contextmenu Правый клик

События mousedown и mouseup в основном используются, когда идет нажатие на кнопку, перемещение, а потом мышь отпускается. Например, при выделении текста, или переносе объекта.

А события click и dblclick в основном нужны для работы с простыми кликами. Клик происходит при последовательных mousedown->mouseup на одном и том же объекте. Если Вы передвините мышь куда-то между mousedown и mouseup, то событие click не произойдет.

Событие contextmenu возникает при правом клике мышью, и по умолчанию вызывает контекстное меню. Не на всех браузер показ меню можно отключить.

Возможность отключения реакции браузера

Когда Вы кликаете на чем-то в браузере, он генерирует мышиные события. Обычно они завязаны на внутренние механизмы браузера, например — переход по ссылке или вызов контекстного меню.

Но javascript позволяет своим обработчикам событий останавливать обработку событий, так чтобы исключить «родную» реакцию браузера.

Все браузеры позволяют отключать реакцию по умолчанию на левую кнопку мыши.

Фрагмент кода кроссбраузерного обработчика выглядит следующим образом:

Однако, для правой и средней кнопки — действия по умолчанию могут быть отключены не везде. В некоторых браузерах разрешить javascript’у отключать родные действия могут специальные настройки в конфигурации.

В Firefox специальной настройкой можно позволить javascript убирать родную реакцию для средней кнопки мыши, а Opera — для правой.

Эти настройки влияют на все страницы, и их нельзя поменять из javascript. Редкие посетители их ставят, так что можно сказать — правая и средняя кнопка не юзабельны для ряда браузеров.

Вот сводная таблица по возможности отключения родной реакции браузера:

Левая кнопка Средняя кнопка Правая кнопка
Internet Explorer Да Да Да
Firefox Да Править конфиг Да
Safari Win Да Да Да
Opera Да Нет Нет
Konqueror Да Да Да

Последовательность генерации

Левый одиночный клик


Во всех браузерах при клике мышью генерируются события:

Все браузеры
ВНИЗ
  • mousedown
ВВЕРХ
  • mouseup
  • click

Правый одиночный клик

Правую кнопку мыши можно использовать в IE, Firefox и Konqueror. Для остальных браузеров обычно
применяют оригинальное решение: вместо правого клика предлагается shift+click.

Internet Explorer Firefox Win Firefox Lin Opera 9 и Konqueror Safari Win
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
  • contextmenu
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • contextmenu
  • mouseup
  • contextmenu
  • mouseup
  • mouseup
  • mouseup
  • click

Заметим, что событие click для правой кнопки мыши генерируется только в Safari, который обрабатывает правую кнопку точно так же, как левую.

Кроме того, событие contextmenu есть только в Firefox и Internet Explorer, причем время генерации зависит от операционной системы. Это связано с реальным поведением контекстного меню. В Firefox/Internet Explorer под Windows оно появляется только когда отпустишь кнопку, а в Firefox под Linux — сразу.

Средний клик

Средняя кнопка мыши сейчас есть почти у всех, даже мышам с 2 кнопками дают возможность делать средний клик — нажав 2 кнопки одновременно, или кликнув на колесико.

Однако, в Firefox и Opera к среднему клику привязаны свои действия по умолчанию, которые нельзя отключить через javascript.

Поэтому реально средний клик юзабелен лишь в Internet Explorer и Konqueror.

Internet Explorer и Safari Win Opera 9, Konqueror, Firefox
ВНИЗ
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup

Двойной клик


Обработка двойных кликов важна, даже если Вы не собираетесь их использовать. Например, Internet Explorer генерирует при двойном клике — одно событие click, а Firefox — два.

Вот полная картина происходящего:

Двойной левый клик

Internet Explorer Firefox, Opera и Safari Win Konqueror
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup
  • click
  • mouseup
  • click
ВНИЗ
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • dblclick
  • mouseup
  • click
  • dblclick
  • mouseup
  • dblclick

Заметим, что Internet Explorer не генерирует mousedown на втором нажатии.

Двойной правый и двойной средний клик почти не используюся в современных интерфейсах, но рассмотрим и их тоже — оригинальные решения в Web часто бывают к месту

Двойной правый клик

Internet Explorer, Firefox Win Firefox Lin, Opera Safari Win Konqueror
ВНИЗ
  • mousedown
  • mousedown
  • contextmenu
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • contextmenu
  • mouseup
  • mouseup
  • click
  • mouseup
ВНИЗ
  • mousedown


  • mousedown
  • contextmenu
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • contextmenu
  • mouseup
  • mouseup
  • click
  • dblclick
  • mouseup

К счастью, здесь Internet Explorer не пропускает второе событие mousedown.

Все браузеры, кроме Safari (тестировалось под Windows) считают два правых клика — двумя кликами по очереди, а не dblclick.

Двойной средний клик

И, наконец, двойной клик средней кнопкой, которая юзабельна только в Internet Explorer, Konqueror и Safari Win.

Как и в случае с правой кнопкой, этот клик обычно считается за два обычных.

Internet Explorer Safari Win Firefox, Opera, Konqueror
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup
  • click
  • mouseup
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup
  • click
  • dblclick
  • mouseup

mouseover, mouseout и mousemove

События mouseover и mouseout срабатывают каждый раз, когда мышь заходит на элемент или выходит с него.

Событие mousemove срабатывает при каждом передвижении мыши. Если Вы пишите код для обработки mousemove — постарайтесь сделать его достаточно быстрым, иначе при передвижении курсора будут заметны тормоза.


Порядок и частота

При переходе с внешнего элемента на внутренний, фиксируется событие onmouseout для внешнего и onmouseover для внутреннего. Смысл в том, что мышь находится ровно «в одном элементе» одновременно: в ближайшем(по z-index) и самом глубоком.

Эти события обладают еще одним забавным свойством. А именно — частота их регистрации соответствует скорости движения мыши. Как браузер успеет зарегистрировать событие — так и получится.

Можно зайти во внутренний элемент, не проходя через внешний.

Иначе говоря, если мышь движется быстро, то события для внешнего элемента могут оказаться пропущенными.

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

Текстовые элементы

Было замечено, что Safari странно обрабатывает mouseover / mouseout при проходе над текстовыми элементами, регистрирует для них события и т.п.

В этом случае можно фильтровать лишние события, проверяя реальное положение мыши.

В 3 версии Firefox события для правой кнопки:
mousedown which=3 button=2
mouseup which=3 button=2
contextmenu which=3 button=2
А не так, как в описании.

Пример тест стенд работает только в IE и FF. В Opera неработает.

что именно не работает в opera ?

не работает правый клик

И не должен. Это фишка оперы.

В настройках Javascript нужно поставить галку «Разрешить перехват щелчков правой кнопки мыши», получится:

mousedown which=3 button=2
mouseup which=3 button=2

Кроме того, событие contextmenu есть только в Firefox и Internet Explorer, причем генерируется в разное время. Это связано с реальным поведением контекстного меню. В Internet Explorer оно появляется только когда отпустишь кнопку.

Гм, Firefox 1.0.8, 1.5.0.x, 2.0.0.x, 3.x под Windows:
нажал – отпустил – контекстное меню
При этом под Linux контекстное меню показывается сразу после «нажал» – по крайней мере, в 2.0.0.x.

Да, это замечание убрал. В части по FF есть еще неточности ?

Правый одиночный клик (таблица)

Firefox (Windows):
вниз: mousedown
вверх: mouseup, contextmenu

Двойной правый клик (таблица)

Аналогично:
вниз: mousedown
вверх: mouseup, contextmenu
вниз: mousedown
вверх: mouseup, contextmenu

А вот что будет в Firefox под Linux надо проверять (скорее всего, как раз как в таблицах).

Да, так и есть.. Поведение Firefox зависит от операционной системы.

Сделал в таблице дополнительную колонку для Firefox Win/Lin.

Это фишка Линукса в принципе!
Там любое событие происходит при нажатии, а не отпускании клавиш. Зашито в ядро. (например переключение языка)

держим левую/правую и жмем правую/левую — event.button = 3
держим левую и жмем среднюю — event.button = 5
держим правую и жмем среднюю — event.button = 6
держим левую и правую и жмем среднюю — event.button = 7

это все при mousedown


Двоичная арифметика. Здесь клавиши как битовые флаги, соответственно левая=1(как 2 в нулевой степени)+правая=2(как 2 в первой степени)=3
Все взято из соответствующих сообщений ОС Win.

Интересно попробовать — спасибо.

Хотелось бы узнать о возможности скрипта в IE, который бы понимал левый клик мышки по объекту, включающему ссылку на новую вкладку, как клик колесиком мышки

можно ли прервать onfocus на mousedown, mouseup
при клике на ссылку, кнопку, инпут, или onfocus наступает раньше всех?

Опера не нужна. Не надо ничего подкручивать для Оперы, он уйдет в прошлое.

Проблема с 11-ой оперой. Нажимаю на любую ссылку колёсиком мышки — открываются 2 вкладки одинакового содержания, в 10-ой опере такого не было, все настройки облазил — ничего не нашёл. Где и что изменить, подскажите пожалуйста.

Как отключить двойной вызов события click после события dblclick в Firefox? Нужно чтобы обрабатывался именно двойной клик иначе он одинарного, сейчас во время двойного клика просто 2 раза вызывается событие click, несмотря на то, что я поставил обработчик ondblclick.

Привет!
Можно запретить срабатывание событий mouseover и mouseout при переходе на внутренний элемент из внешнего, для которого эти события срабатывают?
Спасибо

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

Подскажите пожалуйста, как мне обработать событие hover (на div) при том условие, что была зажата кнопка мыши (mousedown) и соответственно лишь при этом условии выполнить заданную функцию. И не выполнять ее если событие hover произошло без события mousedown

Ubuntu Documentation

Double-clicking only happens when you press the mouse button twice quickly enough. If the second press is too long after the first, you’ll just get two separate clicks, not a double click. If you have difficulty pressing the mouse button quickly, you should increase the timeout.

Open the Activities overview and start typing Universal Access .

Click Universal Access to open the panel.

Under Pointing & Clicking , adjust the Double-Click Delay slider to a value you find comfortable.

Если вместо одиночного нажатия получается двойное даже при увеличенной задержке двойного нажатия, мышь может быть неисправна. Попробуйте подключить к компьютеру другую мышь и посмотрите, как она будет работать. Попробуйте также подключить эту мышь к другому компьютеру и проверьте, воспроизводится ли проблема.

Эта настройка влияет как на мышь, так и на сенсорную панель или другие указательные устройства.

Механизм обработки событий библиотеки Swing

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

Наблюдателями должны являться объекты классов, поддерживающих специальные методы, о которых «знает» наблюдаемый и вызывает их при наступлении события. Такие классы в терминологии Swing называются слушателями.

Универсальный слушатель ActionListener

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

Для отслеживания и обработки такого события может быть использован особый слушатель ActionListener, имеющий один метод:

public void actionPerformed(ActionEvent event).

У использования ActionListener есть небольшое преимущество. Кроме того очень удобно запомнить и постоянно использовать один класс с одним методам и обращаться к остальным лишь в тех относительно редких случаях, когда возникнет такая необходимость.

Обработка нажатия кнопки

Разработчику необходимо навесить на JButton слушателя, который будет выполняться, как только пользователь нажмет на кнопку.

Как только пользователь нажимает кнопку, создается событие ActionEvent, которое передается слушателям кнопки. Для того, чтобы организовать слушателя, Swing предоставляет интерфейс ActionListener, который необходимо реализовать. Интерфейс ActionListener требует только реализации одного метода — actionPerformed. Пример класса, реализующего интерфейс ActionListener представлен ниже.

public class TestActionListener implements ActionListener <


public void actionPerformed(ActionEvent e) <

//Код, который нужно выполнить при нажатии

После того, как обработчик создан, его необходимо добавить к кнопке. Делается это при помощи метода addActionListener. В качестве параметра методу передается обработчик. Например, это можно сделать вот так:

JButton button = new JButton(«Test button»);

ActionListener actionListener = new TestActionListener();

Здесь мы создаем сначала кнопку. Потом создаем экземпляр нашего слушателя TestActionListener, а затем добавляем его в качестве слушателя к кнопке с помощью вызова addActionListener и передаем ему экземпляр обработчика. Вообще слушателей может быть неопределенное количество. Если нам будет необходимо два или более слушателей, которые должны будут по-разному реагировать на нажатие кнопки, то для каждого из них вызовем addActionListener.

Работа с меню в библиотеке Swing

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

Создание меню

Меню окна представлено в Swing классом JMenuBar. По сути своей этот класс представляет собой панель с менеджером расположения BoxLayout (по горизонтали), в которую можно добавлять не только элементы меню, но и что угодно: хоть выпадающие списки, хоть панели с закладками. Однако для удобства пользования программой предпочтительнее использовать «традиционные» возможности меню.

Главное меню должно быть присоединено к окну методом setJMenuBar(JMenuBar menuBar).

Элементами главного меню являются пункты меню верхнего уровня — выпадающие прямоугольные блоки команд — объекты класса JMenu. Конструктор JMenu(String title) принимает один параметр: название пункта меню, которое будет отображаться в строке главного меню.

Пункты меню верхнего уровня, в свою очередь, состоит из пунктов меню, представленных классом JMenuItem. По логике работы пункты меню аналогичны кнопке JButton, то есть при нажатии на него пользователем выполняется какое-то действие.

Создать элемент меню можно пустым конструктором JMenuItem либо (что более востребовано) одним из конструкторов, в которые передается текст и/или значок элемента меню: JMenuItem(String text), JMenuItem(Icon icon), JMenuItem(String text, Icon icon). Конечно, в любой момент текст и значок можно сменить методами setText(String text) и setIcon(Icon icon) соответственно.

Элемент добавляется в меню методом add(JMenuItem item) класса JMenu. Чтобы отделить группы взаимосвязанных элементов меню, можно добавить между ними разделитель методом addSeparator() класса JMenu.

Кроме того, в меню можно добавить и другое меню. В этом случае образуется последовательность вложенных друг в друга подменю, что довольно часто встречается в современных программах. Но не следует увлекаться: глубина вложенности более трех уровней скорее всего приведет к неудобствам пользования программой.

Создадим главное меню окна, состоящее из двух подменю: «Файл» и «Правка», причем в меню «Правка» поместим выпадающее подменю. Кроме того, воспользуемся знаниями о менеджере расположения главного меню, чтобы добавить с правого края значок (наподобие того, как это сделано в браузере Internet Explorer).

super(«Окно с меню»);

JMenuBar menuBar = new JMenuBar();

JMenu fileMenu = new JMenu(«Файл»);

fileMenu.add(new JMenuItem(«Открыть», new ImageIcon(«1.gif»)));

JMenu editMenu = new JMenu(«Правка»);

JMenu pasteMenu = new JMenu(«Вставить»);

pasteMenu.add(new JMenuItem(«Из буфера»));

pasteMenu.add(new JMenuItem(«Из файла»));

menuBar.add(new JLabel(new ImageIcon(«2.gif»)));

Обработка команд меню

Как было сказано, каждый элемент меню по сути представляет собой кнопку, поэтому реагирует на те же события и позволяет присоединять к себе тех же слушателей, что и кнопка. Поэтому можно назначить реакцию на команды меню точно так же, как делалось для кнопки. Например, чтобы при выборе в меню элемента «Выйти» программа прекращала свою работу, следует заменить в примере команду

на последовательность команд:

JMenuItem exit = new JMenuItem(«Выйти»);

public void actionPerformed(ActionEvent event) <

Командой System.exit(0) прекращается работа текущего приложения.

Дата добавления: 2020-11-02 ; просмотров: 428 | Нарушение авторских прав

Илон Маск рекомендует:  Что такое код asp aspenablechunkedencoding
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL