Условное локальное исключение импорта

JScrollPane имеет определенную область для этого, заголовок строки (см. диаграмму в API :)

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

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

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

4
задан frapadingue 18 January 2019 в 12:34
поделиться

2 ответа

Оператор import x делает две вещи *

  1. Он загружает (и запускает) модуль, на который ссылаются, если он еще не был
  2. Он назначает модуль для переменная с тем же именем

Ваша функция назначает модуль something только переменной something, когда a == 1. Если a != 1, даже если модуль был загружен , он не назначен переменной, поэтому на него нельзя ссылаться.

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

Причина, по которой ваш код не ссылается на глобальный something, заключается в том, что python переопределяет глобальные имена, если локальная переменная с тем же именем появляется в любом месте функции, даже если она никогда не достигается. Следующая функция f не работает так же, как ваша.

x = 1
def f(y):
    if False:
       x = y
    return x

Решение состоит в том, чтобы не использовать x как локальную, так и глобальную переменную.

0
ответ дан FHTMitchell 18 January 2019 в 12:34
поделиться

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

def f():
    if False:
        a = 1
    print(a)

a = 1
f()

И обязательный FAQ ссылка .

0
ответ дан Ondrej K. 18 January 2019 в 12:34
поделиться
Другие вопросы по тегам:

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