Отношения между JTable, TableModel & TableData

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

blockquote>

Вы должны знать угол поворота для каждой отдельной пули. Добавьте угол поворота к данным пули:

data = (arrowbox, move[0], move[1], shipdir)
arrows.append(data)

Создайте повернутые пули с помощью pygame.transform.rotate и blit it:

for bullet in arrows:
    rotBullet = pygame.transform.rotate(arrow, bullet[3])
    screen.blit(rotBullet, (bullet[0].x, bullet[0].y))
5
задан Lukas Rotter 14 December 2015 в 17:19
поделиться

3 ответа

При изменении значения в данных TableModel необходимо запустить это событие. например, изменяя значение одной ячейки, Вы звоните fireTableCellUpdated(row, col);.

Посмотрите на это более конкретно.

5
ответ дан 14 December 2019 в 01:18
поделиться

При установке TableModel в JTable таблица добавляет наблюдателя (TableModelListener), который будет информирован об изменениях в модели.

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

2
ответ дан 14 December 2019 в 01:18
поделиться

Я предполагаю, что Вы используете фразу "TableData", чтобы просто означать данные, показываемые в JTable. Отвечать на Ваш вопрос, видите ли Вы автоматические обновления или не зависите от Вашего TableModel и как он взаимодействует с Вашими данными.

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

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

2
ответ дан 14 December 2019 в 01:18
поделиться
Другие вопросы по тегам:

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