Если вы хотите использовать системную установку Apple Python 2.7, имейте в виду, что она не совсем соответствует стандартам именования, изложенным в PEP 394 .
В частности, он включает необязательные символические ссылки с суффиксом 2.7
, на которые вам говорят не полагаться, и не включает рекомендуемые символические ссылки с суффиксом 2
, о которых вам говорят , если полагается.
Если вы хотите исправить это, придерживаясь Apple Python, вы можете создать свои собственные символические ссылки:
$ cd
$ ln -s /usr/bin/python python2
Или псевдонимы в вашей конфигурации bash:
alias python2 python2.7
И вы можете сделать то же самое для Apple 2to3, easy_install и т. д., если они вам понадобятся.
Вы не должны пытаться помещать эти символические ссылки в /usr/bin
и определенно не пытайтесь переименовать то, что уже есть, или изменить настройку distutils на что-то большее, чем PEP-совместимое. Эти файлы являются частью ОС и могут использоваться другими частями ОС, и ваши изменения могут быть перезаписаны даже при незначительном обновлении от 10.13.5 до 10.13.6 или что-то в этом роде, поэтому оставьте их в покое и обходите их как описано выше.
В качестве альтернативы вы могли бы:
python2.7
вместо python2
в командной строке и в ваших shbangs и так далее , python
, python3
, python2
и т. Д. Не имеют значения, когда вы всегда используете локальную активированную среду python
. Метод paint
вызывается Thread Event Dispatch Thread (EDT) и находится в основном из-под вашего контроля.
Он работает следующим образом: когда вы реализуете пользователя интерфейс (вызов setVisible(true)
в вашем случае), Swing запускает EDT. Этот поток EDT затем запускается в фоновом режиме, и всякий раз, когда ваш компонент должен быть окрашен, он вызывает метод paint
с соответствующим экземпляром Graphics
, который вы можете использовать для рисования.
Итак, когда компонент «необходимо» для перекраски? - Например, когда
repaint
Просто предположим, что он будет вызываться , когда это необходимо.
На самом деле вы никогда не ссылаетесь на матод. Он автоматически вызывается автоматически, когда необходимо перекрасить область содержимого вашего фрейма. Это происходит, когда ваш кадр визуализируется в первый раз, изменяется, максимизируется (после минимального) и т. Д.
Если вы не знаете, как работает API рисования AWT / Swing (render), прочитайте эту статью - Покраска в AWT и Swing .
Метод Paint Независимо от того, как запускается запрос на краску, AWT использует механизм «обратного вызова» для рисования, и этот механизм одинаковый как для тяжелых, так и для легких компонентов. Это означает, что программа должна поместить код рендеринга компонента внутри определенного переопределенного метода, и этот инструментарий вызовет этот метод, когда придет время рисовать. Метод, который нужно переопределить, находится в java.awt.Component.
blockquote>
repaint()
. Это расписал вызовpaint(Graphics)
или (Swing)paintComponent(Graphics)
, который может быть вызван, и может i> быть проигнорирован. – Andrew Thompson 14 October 2011 в 09:02