PDA

Показать полную графическую версию : Обращения из класса в класс


blackeangel
04-06-2017, 15:11
В общем есть такая ситуация. Есть 2 класса - в первом находится форма с кнопочками, чекбоксами и прочими прелестями.
Во втором классе происходят все вычисления. Внимание вопрос: как заставить прогресс бар заполняться?
вызывать еще раз через

new Class1().progressBar1.setValue(30);

не вариант, так как создает еще один экземпляр формы.
И еще одна неприятность: метод во втором классе - статический.
Как быть то?

shisik
04-06-2017, 16:03
И еще одна неприятность: метод во втором классе - статический. »

А можно посмотреть на эти классы?

blackeangel
04-06-2017, 22:54
shisik, да пожалуйста, в них нет ничего такого

shisik
05-06-2017, 03:25
Я вижу 3 класса: Generator и его наследников Generater и Functions. progressBar1 определён в классе Generator как public, а значит существует и в его наследниках. Так что и откуда надо вызывать?

blackeangel
05-06-2017, 05:02
Из наследника Generater изменить значение прогресс бара, без вызова ещё одной формы.

shisik
05-06-2017, 15:17
blackeangel, странно, конечно. Зачем эти классы делать анследниками? Ну хорошо, попробуем. Что если в Generator добавить статический член

protected static Generator instance;

и в main сохранить в него созданный объект:

instance = new Generator();

А потом где нужно в наследнике вызывать метод установки прогресса:

instance.bar(30);

Только что будет вызывать методы наследников?

blackeangel
06-06-2017, 10:26
То что искал! Спасибо большое!)

blackeangel
06-06-2017, 16:25
shisik, скажите, а как разделить на несколько потоков, для того чтобы обновлялся прогресс бар?

shisik
06-06-2017, 16:29
Почитайте эту статью https://habrahabr.ru/post/164487/

blackeangel
06-06-2017, 17:17
Почитайте эту статью https://habrahabr.ru/post/164487/

Это я читал уже. Но осталось непонятным, как это прикрутить к моему проекту?

shisik
06-06-2017, 20:44
blackeangel, ну как? Поместить в отдельынй поток код, требующий длительного времени для выполнения (собственгно, решающий задачу), и периодически в из него посылать сигнал с новым значением погресса.

blackeangel
06-06-2017, 22:46
blackeangel, ну как? Поместить в отдельынй поток код, требующий длительного времени для выполнения (собственгно, решающий задачу), и периодически в из него посылать сигнал с новым значением погресса.
Хорошо, а будут ли доступны из того потока публичные константы из потока гуи?

shisik
06-06-2017, 23:44
blackeangel, да, будут. Если только константы - то не страшно, а вот если писать какие-то данные, то нужно синхронизировать.




© OSzone.net 2001-2012