Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2016, 20:32   #11
AlexOrlo
Пользователь
 
Регистрация: 27.10.2016
Сообщений: 26
По умолчанию

Продолжу излагать сюда свои заморочкии...
И так по большому счёту без лишних слов, имею панель на которой рисуется график.
Эта панель вложена в главную рамку.
График рисуется в лимитах размера панели. И что бы перемещать его по оси Х и У, нужно его перерисовывать, что выглядит крайне ПЛОХО, так как тормозит.
Если использовать панель с прокруткой и на неё вставлять БОЛЬШУЮ по размерам панель на которую помещается весь график, то сам график не пересчитывается, но тормозит при прокрутке так же дико.

О чём я подумал: можно ли нарисовать сразу большой кусок этого графика и поместить в какой то буфер. Что бы потом при необходимости "прокрутки", не было бы этих тормозов..
Существует ли такой буфер? Как вообще прокручивать 2дграфику без тормозов?

Последний раз редактировалось AlexOrlo; 02.11.2016 в 20:56.
AlexOrlo вне форума Ответить с цитированием
Старый 03.11.2016, 08:27   #12
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Ищи в интернете информацию по java swing double buffering.

P.S. Если вам нужно рисовать много сложной графики, то я бы на вашем месте обратил своё внимание на библиотеку libGDX
ultimatet41 вне форума Ответить с цитированием
Старый 03.11.2016, 14:33   #13
AlexOrlo
Пользователь
 
Регистрация: 27.10.2016
Сообщений: 26
По умолчанию

Да спасибо. Если честно начал читать книгу про JavaFx.
Я так понял JavaFx заточена больше под гуи, а libGDX под графику?
AlexOrlo вне форума Ответить с цитированием
Старый 03.11.2016, 21:01   #14
AlexOrlo
Пользователь
 
Регистрация: 27.10.2016
Сообщений: 26
По умолчанию

Такс.. продолжаю тупить.
Уже пару часов не могу врубиться как проводить глубокое клонирование...
Создаётся двухмерный arraylist:

Код:
import java.util.*;
import java.io.IOException;
import java.io.File;
import javax.swing.JFileChooser;
public class CSVReader
{
   
    public CSVReader()
    {
      
    }
//-------------------------------- 
    public ArrayList<ArrayList<Float>> fileReader () throws IOException
   {
      ArrayList<String> filearray = new  ArrayList<String>();
      JFileChooser fileopen = new JFileChooser();
      int ret = fileopen.showDialog(null, "Open CSV file");
      int flag=0;
      String tmp;
       if (ret == JFileChooser.APPROVE_OPTION) {
       File file = fileopen.getSelectedFile();
       Scanner filescan = new Scanner (file);
       for (int i=0; i<2; i++)
       {if (flag==0){tmp=(filescan.nextLine());      //пропускаю первую строку
                    flag=1;                   } else
       {
           while (filescan.hasNext())
        {
          filearray.add (filescan.nextLine());        
          flag=1;
        }
       }}
       }
       
       ArrayList<ArrayList<Float>> data = new ArrayList<>();
      
       int size = filearray.size();
       int pos;
       String line, temp;
       Scanner linescan;
       
       for(int j=1;j<33;j++)
         {
            ArrayList<Float> row = new  ArrayList<>();
            if ((j!=1)&(j!=8)&(j!=9)&(j!=17)&(j!=21)&(j!=29)&(j!=30)&(j!=32)) 
            { 
                for(int i=0; i<(size); i++) 
              {
                line=filearray.get(i);
                linescan = new Scanner(line);
                linescan.useDelimiter(";");               ///1.8.9.17.21.29.30.32 пропускаемые столбцы 
                pos=1;
                   while (pos!=j)
                  { 
                   temp=(linescan.next());
                   pos++;
                  } 
                row.add (Float.parseFloat(linescan.next()));
               } 
             data.add(row);}
        }
        return data;
    }
}
   
   //data двойной списочный массив. Каждая ячейка которого является списочным массивом типа флоат и представляет столбец CSV файла.
далее в конструкторе другого класса я этот двойной arraylist вызываю:

Код:
public csv () throws IOException
  {
      CSVReader reader = new CSVReader();     
      arr = reader.fileReader();
  }
Но естественно проводя какие то изменения, к начальным данным я уже попасть не могу.
Я так понял нужно провести "глубокое клонирование"
Курил интернет долго, даже примеры смотрел, но я ничего не понял...
Как это применить на моём примере? Помогите пожалуйста

Последний раз редактировалось AlexOrlo; 03.11.2016 в 21:09.
AlexOrlo вне форума Ответить с цитированием
Старый 06.11.2016, 18:40   #15
AlexOrlo
Пользователь
 
Регистрация: 27.10.2016
Сообщений: 26
По умолчанию

Если кто знает как это осуществить...: Есть JSlider, по ходу выполнения программы, мне нужно поменять его характеристики.. То есть мне нужно изменить диапазон минимум и максимум этого слайдера. Как это можно сделать?
Старый нужно как то закрыть и создать новый с новыми значениями? Как это можно сделать?
Спасибо всем заранее за ответы.
AlexOrlo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS Access+ComboBox (читает только до знака -) Denis3 БД в Delphi 1 15.08.2013 17:35
Цикл for. Пропустить первую строку webber9989 Общие вопросы Delphi 13 03.12.2012 12:20
Как рапечатать только первую страницу документов? Тандер Microsoft Office Word 1 25.06.2012 00:11
Прочитать первую строку из memo hacknet Работа с сетью в Delphi 1 22.10.2010 18:56
Почему читает лишнюю строку nusik Общие вопросы C/C++ 6 20.05.2009 18:22