Почему добавление неопределенного JProgressBar в JTable убивает анимацию?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему добавление неопределенного JProgressBar в JTable убивает анимацию?

Сообщение Anonymous »


Я возвращаю пользовательский интерфейс JavaFX к Swing. В пользовательском интерфейсе у меня есть таблица задач с индикаторами выполнения. Если задача имеет неопределенную длину, я бы хотел использовать неопределенный индикатор выполнения. К сожалению, я не могу понять, как анимировать неопределенный индикатор выполнения, находясь внутри таблицы.

GPT-4 очень «полез» при изучении этого веб-сайта и предоставил мне всевозможные примеры, которые не работают.

Я создал пример ниже. Он рисует пользовательский интерфейс с анимацией неопределенного индикатора выполнения. Каждые 5 секунд в таблицу добавляется полоса, чередующаяся между новой и анимированной вверху.

В таблице ничего не анимируется. Более того, если я добавлю панель сверху к таблице, она также перестанет анимироваться вверху.

Что происходит?

import java.awt.BorderLayout; импортировать java.awt.Component; импортировать java.awt.Dimension; импортировать java.awt.EventQueue; импортировать javax.swing.JFrame; импортировать javax.swing.JPanel; импортировать javax.swing.JProgressBar; импортировать javax.swing.JScrollPane; импортировать javax.swing.JTable; импортировать javax.swing.UIManager; импортировать javax.swing.table.DefaultTableModel; импортировать javax.swing.table.TableCellRenderer; импортировать javax.swing.table.TableColumnModel; @SuppressWarnings("последовательный") публичный класс TestSwing расширяет JPanel и реализует TableCellRenderer { String[] заголовок = {"Прогресс"}; DefaultTableModel tableModel = новая DefaultTableModel (нуль, заголовок) { @Override общественный класс getColumnClass (int col) { return getValueAt(0, col).getClass(); } }; Таблица JTable = новый JTable(tableModel); JProgressBar bar = новый JProgressBar(); публичный TestSwing() { bar.setIndeterminate(истина); TableColumnModel columnsModel = table.getColumnModel(); columnsModel.getColumn(0).setCellRenderer(this); setLayout (новый BorderLayout()); добавить (бар, BorderLayout.NORTH); Прокрутка JScrollPane = новая JScrollPane (таблица); Scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); добавить (прокрутка, BorderLayout.CENTER); } @Override общедоступный компонент getTableCellRendererComponent (таблица JTable, значение объекта, логическое значение isSelected, логическое значение hasFocus, строка int, столбец int) { возвратная планка; } защищенное недействительное обновление() { в то время как (истина) { пытаться { Thread.sleep(5000); } catch (Исключение е) {}; EventQueue.invokeLater(() -> { tableModel.addRow(new Object[] {Boolean.TRUE}); }); } } public static void main(String[] args) выдает исключение { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); EventQueue.invokeLater(новый Runnable() { @Override общественный недействительный запуск () { JFrame f = новый JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Список TestSwing = новый TestSwing(); f.add(список); f.setSize(новое измерение(300, 500)); f.setLocationRelativeTo(null); f.setVisible(истина); Средство обновления потока = new Thread(() -> list.update(), «List Updater»); updater.setDaemon(истина); обновление.start(); } }); } } Этот вопрос появлялся на этом сайте несколько раз: Я попробовал обновить модель таблицы, как было предложено в одном принятом ответе. Я попробовал перерисовать таблицу, как предложил другой. Я даже пытался заставить TableCellRenderer возвращать другую полосу для неопределенных строк в качестве принятого ответа третьего.

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

Если это работает на вашей виртуальной машине, сообщите мне, что вы используете. Ни на одном из моих он не работает.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Процесс рендеринга webView (11521) убивает (OOM или обновление), убивает приложение
    Anonymous » » в форуме Android
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как я могу сделать индикатор выполнения с помощью JProgressBar из Swing в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Очистка данных из одной JTable также удаляет другую JTable.
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Очистка данных из одной JTable также удаляет другую JTable.
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Добавление данных в JTable из другого класса
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»