Добрый день! Возникла проблема... Не получаеться перерисовать содержимое панели, которая является вкладкой в tabbedPane. Если во время процесса сортиоовки переключиться на другую вкладку, а потом снова вернуться к данной сортировке, то содержимое панели перерисовывается.
Работа на тему визуализации процесса сортировки.
public class Bubble_sort_panel extends JPanel implements Runnable {
Thread thread;
boolean now_sort = false;
public Bubble_sort_panel() {
}
public void bubble_sort() throws InterruptedException {
now_sort = true;
thread = new Thread(this);
thread.start();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i < Constant.getN(); i++) { // активные прямоугольники выделить другим цветом
if (i == Variable.getIndex_of_spaw_element_bubble() || i == Variable.getIndex_of_spaw_element_bubble()+1) {
g2.setColor(Constant.getColorOfActyveRectangle());
g2.fill(rectangle_array_for_bubble[i]);
}
else {
g2.setColor(Constant.getColorOfRectangle());
g2.fill(rectangle_array_for_bubble[i]);
}
}
}
@Override
public void run() {
while (now_sort) {
try {
for (int i = array_for_bubble.length - 1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
if (array_for_bubble[j] > array_for_bubble[j + 1]) {
Variable.setIndex_of_spaw_element_bubble(j);
/*
// вызвать перерисовку
*/
Thread.sleep(1000);
int t = array_for_bubble[j];
double posX = rectangle_array_for_bubble[j].getX();
array_for_bubble[j] = array_for_bubble[j + 1];
rectangle_array_for_bubble[j].setFrame(rectangle_array_for_bubble[j+1].getX() , rectangle_array_for_bubble[j].getY(), rectangle_array_for_bubble[j].getWidth() , rectangle_array_for_bubble[j].getHeight());
array_for_bubble[j + 1] = t;
rectangle_array_for_bubble[j+1].setFrame(posX, rectangle_array_for_bubble[j+1].getY(), rectangle_array_for_bubble[j+1].getWidth(), rectangle_array_for_bubble[j+1].getHeight());
Rectangle2D r = rectangle_array_for_bubble[j];
rectangle_array_for_bubble[j] = rectangle_array_for_bubble[j + 1];
rectangle_array_for_bubble[j + 1] = r;
}
}
}
now_sort = false;
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
if (!now_sort) {
thread.interrupt();
}
}
}
Могу ошибаться, но должен помочь обычный repaint()
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем приветЯ хочу сделать такую прогу: Чтобы при наведении на объект или qr метку, показывала интерфейс с данными об объекте
У меня 2 фрагмента в viewpagerВо фрагментах recycleview