Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Доступ к форме из класса / 25 сообщений из 35, страница 1 из 2
07.11.2013, 18:42:56
    #38456801
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Есть класс с формой Form1 и обычный класс. Нужно из обычного класса поменять свойства объекта на форме
Сделал сеттер в классе Form1:
Код: java
1.
2.
3.
public void setTxt(String text) {
        jTextArea1.setText(text);
    }


А в обычном классе пишу:
Код: java
1.
2.
        Form1 f1 = new Form1();
        f1.setTxt("blabla");


Получаю шиш. Как сделать, чтобы работало?
...
Рейтинг: 0 / 0
07.11.2013, 18:50:56
    #38456815
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Стандартная вопрос у тех кто взял NetBeans на кликал там всякую ерунду абсолютно не понимая, как оно на уровне Java кода вообще работает. Буквально пару недель назад аналогичная тема была.
Как же из одного класса обратиться к другому. Не понятно.
Что такое объекты, классы, поля и методы понятно?
...
Рейтинг: 0 / 0
07.11.2013, 18:51:42
    #38456818
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
www.sql.ru/forum/1053935/peredat-stroku-v-pole-obekta-ekz-klassa-iz-drugogo-obekta-po-sobytiu
...
Рейтинг: 0 / 0
07.11.2013, 18:53:06
    #38456821
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
BlazkowiczЧто такое объекты, классы, поля и методы понятно?
Естественно.
Да, конечно можно через конструктор сделать установку значения. Интересуют, есть ли другие способы.
...
Рейтинг: 0 / 0
07.11.2013, 18:54:40
    #38456825
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
sharmankaИнтересуют, есть ли другие способы.
да полно
через ссылку одного объекта на другой
через статическое поле
через не статическое поле
через слушатель
через binding
читайте ссылку что привел выше, смотрите туториалы по Swing
...
Рейтинг: 0 / 0
07.11.2013, 19:10:40
    #38456859
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
sharmanka, если ваши внешние классы - являются WorkerThreads то не забывайте
про особенности синхронизации в Swing.
...
Рейтинг: 0 / 0
07.11.2013, 19:32:07
    #38456881
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
maytonsharmanka, если ваши внешние классы - являются WorkerThreads то не забывайте
про особенности синхронизации в Swing.
внешний классы имплементируют Runnable интерфейс. Т.е каждая нить у меня должна писать свой текст.
...
Рейтинг: 0 / 0
07.11.2013, 20:45:30
    #38456968
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Поправьте меня, если я неправ. Вместо создания нового экземпляра Form1 нужно получить ссылку на существующий. Проблема в том, что создавая статический метод для возврата ссылки мне нужно оперировать с Form1, которая ни разу не статическая, о чем любезно сообщает компилятор.
...
Рейтинг: 0 / 0
07.11.2013, 23:23:31
    #38457081
Andrew1411
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
sharmanka,

Кто мешает из не-статического кода формы (к примеру из конструктора) сохранить в статическое поле (private static Form1 instance;) ссылку на себя (instance = this; )
и через статический геттер ее получать
public static Form1 getInstance(){
return instance;
}
????
...
Рейтинг: 0 / 0
07.11.2013, 23:32:28
    #38457090
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Andrew1411,
не додумался :( Большое спасибо!
...
Рейтинг: 0 / 0
08.11.2013, 00:01:20
    #38457127
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
А зачем вам статический класс GUI-окна?
На мой взгляд у вас направление мысли в первом посте было абсолютно верное.
...
Рейтинг: 0 / 0
08.11.2013, 00:11:30
    #38457149
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Troglodit,
в первом посте по всей видимости создавалась просто новая форма, не имеющая отношения к той, в которой нужно изменить текст.
...
Рейтинг: 0 / 0
08.11.2013, 09:45:26
    #38457396
Andrew1411
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
sharmanka,

Только не забывайте при закрытии формы очищать instance, иначе горбатый коллектор ее не соберет :)

если прилада многопоточная - поле instence делайте volatile
...
Рейтинг: 0 / 0
08.11.2013, 10:20:55
    #38457433
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Andrew1411sharmanka,

Кто мешает из не-статического кода формы (к примеру из конструктора) сохранить в статическое поле (private static Form1 instance;) ссылку на себя (instance = this; )
и через статический геттер ее получать
public static Form1 getInstance(){
return instance;
}
????
Форма-синглтон, вот это круто!
Неучи учат других неучей, до чего скатился форум...
...
Рейтинг: 0 / 0
08.11.2013, 11:19:14
    #38457532
Andrew1411
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
HoBTID,

1. Есть множество примеров, когда форма единстенная. (посмотрим на диалоговые?)
2. Автор спрашивал конкретику, на что и получил конкретику.
3. Надо будет поддерживать множество форм - либо тупо сделает локатор, либо наконец почитает книжки и сделает правильно.
4. я не собираюсь учить, я отвечаю на конкретный вопрос (не правильная постановка ведет к неправильному ответу, если бы у автора одновременно было бы несколько экземпляров, он бы это упомянул, либо ССЗБ)
5. Троль на выпасе вместо ответа автору тролит.
6. И наконец. десктоп приладами я не занимаюсь (совсем). <spam>Вы, как специалист можете проконсультировать его в своем любимом ПТ по проблемам форм в 1C.</spam>
...
Рейтинг: 0 / 0
08.11.2013, 11:23:03
    #38457541
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
HoBTIDФорма-синглтон, вот это круто!
Неучи учат других неучей, до чего скатился форум...
Ну, так показал бы примером как надо.
...
Рейтинг: 0 / 0
08.11.2013, 11:44:27
    #38457568
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
ОК, проведу небольшой ликбез.
А то все троллю, да троллю, может что полезное скажу.

Автору в первую очередь учить паттерн MVC.
Сразу его понять конечно же не получится,
как минимум будет стойкое ощущение, что контроллер не нужен.

Синглтоном (т.е. хранить в статическом поле, voilatile, как правильно сказал Andrew1411)
нужно сделать Главный контроллер приложения,
это контроллер из паттерна MVC, но не формы, а всей программы.

Дальше, главный контроллер создает другой контроллер (назовем его контроллер2),
отвечающий за работу с тем, что делается в этой форме.
И записывает его себе в поле, с геттером и сеттером.

Контроллер2 создает модель данных того, с чем работает форма, и саму форму.
Лучшее решение взаимодействия формы и модели - Binding, но, чтобы сразу не переусложнять,
можно просто передать модель в конструктор формы. Вызов конструктора формы будет в контроллере2.

Из любого места приложения можно получить главный контроллер, пользуясь его методами, получить контроллер2.
А из него модель данных. Саму форму получать не надо!
Но если не придумаете как обойтись без этого, для начала, можете даже получить форму.

Вот это правильная архитектура для любых десктопных систем, в том числе и на Swing.
...
Рейтинг: 0 / 0
08.11.2013, 11:55:32
    #38457589
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
HoBTIDАвтору в первую очередь учить паттерн MVC.

Автор ещё не знает как в одном объекте использовать ссылку на второй объект а тут ему сразу MVC, по которму, кстати для Swing внятных примеров нет. Потому что Swing устроен не совсем как классический MVC. К тому же классический MVC для GUI вообще избыточен, поэтому используют другие подходы.

HoBTIDСразу его понять конечно же не получится, как минимум будет стойкое ощущение, что контроллер не нужен.

В Swing контроллер интегруруется в контрол, который в то же время и View.

HoBTIDСинглтоном (т.е. хранить в статическом поле, voilatile, как правильно сказал Andrew1411)
нужно сделать Главный контроллер приложения,
это контроллер из паттерна MVC, но не формы, а всей программы.

HoBTIDДальше, главный контроллер создает другой контроллер (назовем его контроллер2),
отвечающий за работу с тем, что делается в этой форме.
И записывает его себе в поле, с геттером и сеттером.
Это даже я себе представляю в голове с трудом. Сомневаюсь что автору вообще это как-то поможет.

HoBTIDКонтроллер2 создает модель данных того, с чем работает форма, и саму форму.
Лучшее решение взаимодействия формы и модели - Binding, но, чтобы сразу не переусложнять,
можно просто передать модель в конструктор формы. Вызов конструктора формы будет в контроллере2.

С биндингом уже сразу получится MVVM.

HoBTIDИз любого места приложения можно получить главный контроллер, пользуясь его методами, получить контроллер2.
А из него модель данных. Саму форму получать не надо!
Но если не придумаете как обойтись без этого, для начала, можете даже получить форму.
Самое интересно что эти все разглогольствования вообще не объясняют как это всё связать воедино. У автора модель с контролом не выходит связать. А тут ему ещё и контроллер нужно как-то добавить.

HoBTIDВот это правильная архитектура для любых десктопных систем, в том числе и на Swing.
LOL. Какая роль у контроллера, не понятно. Как контроллер будет уживаться с анонимными классами, которые исполняют роль контроллера во всех примерах Swing - тоже не понятно.
Как это всё вообще решает проблему автора не понятно в двойне.
...
Рейтинг: 0 / 0
08.11.2013, 12:00:31
    #38457609
Andrew1411
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
HoBTID,

Все верно сказано, но в переводе на русский это звучит примерно так: "ТС, просай писать, садись учить уроки".
Но, учиться лучше в процессе работы.

Скорее всего, Тпикстартеру лучше сейчас изучать не MVC (что, в его случае, безусловно полезно), а начать с IoC, что быстрее внедрить в нужные места. Если в приладе часть форм сделана с учетом паттерна MVC, а часть мышекодингом, - то это явная хрень. Кроме того, MVC лучше юзать как раз с IoC. таким образом, будет более правильное развитие.
...
Рейтинг: 0 / 0
08.11.2013, 12:28:32
    #38457667
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
TrogloditА зачем вам статический класс GUI-окна?
Мне нужно изменять элементы на форме из другого класса.
TrogloditНа мой взгляд у вас направление мысли в первом посте было абсолютно верное. Разве? Там же создавался новый экземпляр объекта формы, а не получался текущий.

Andrew1411Только не забывайте при закрытии формы очищать instance, иначе горбатый коллектор ее не соберет :)
если прилада многопоточная - поле instence делайте volatile
Сделал и то, и другое, спасибо за замечания.
Andrew1411Все верно сказано, но в переводе на русский это звучит примерно так: "ТС, просай писать, садись учить уроки".
Да я бы и рад почитать про MVC и прочие интересные вещи, но к сожалению, у меня не студенческие лабы, а вполне конкретные задачи и Java всего лишь инструмент для их решения. Если код, который у меня выполняет задачу, занимает 5 строк, то зачем городить лес и его раздувать? Я понимаю, что это показывает крутой скилл программиста, знания паттернов, но мне не перед кем хвастаться :)
...
Рейтинг: 0 / 0
08.11.2013, 12:45:45
    #38457698
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Andrew1411Скорее всего, Тпикстартеру лучше сейчас изучать не MVC (что, в его случае, безусловно полезно), а начать с IoC, что быстрее внедрить в нужные места. Если в приладе часть форм сделана с учетом паттерна MVC, а часть мышекодингом, - то это явная хрень. Кроме того, MVC лучше юзать как раз с IoC. таким образом, будет более правильное развитие.
Нет
...
Рейтинг: 0 / 0
08.11.2013, 13:05:10
    #38457750
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
BlazkowiczВ Swing контроллер интегруруется в контрол, который в то же время и View.
Вот это да!!!
Уж Вы-то знаете паттерн MVC, я был полностью этом уверен, до вышеприведенного высказывания...

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

Рассмотрим на примере, класс JTable - контрол управления таблицей.
TableModel - интерфейс модели представления - это не бизнес-модель ,
это модель представления .

В паттерне MVC и класс JTable и любой класс, реализующий TableModel относятся к View.
Swing реализует паттерн MVVM и в нем TableModel - это ViewModel.
Ни модели, ни контроллера из паттерна MVC здесь нет (в общем случае нет, про совмещение ролей, чуть ниже).
А бизнес-моделью таблицы, будет являться например, List<MyBusinessObject>.

Однако для простоты начала работы со Свингом, есть класс DefaultTableModel, который совмещает роли
модели представления и бизнес-модели , т.е. он реализует интерфейс TableModel и хранит
фактические данные в двухмерном массиве объектов, но даже в этом случае,
контроллер не DefaultTableModel и не JTable, а тот класс, который создает DefaultTableModel и JTable.

В заключение, контроллера нет и не может быть ни в Swing, ни в любой другой интерфейсной библиотеке,
потому что эта библиотека ничего не знает о фактических данных.
...
Рейтинг: 0 / 0
08.11.2013, 13:06:33
    #38457754
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
maytonAndrew1411Скорее всего, Тпикстартеру лучше сейчас изучать не MVC (что, в его случае, безусловно полезно), а начать с IoC, что быстрее внедрить в нужные места. Если в приладе часть форм сделана с учетом паттерна MVC, а часть мышекодингом, - то это явная хрень. Кроме того, MVC лучше юзать как раз с IoC. таким образом, будет более правильное развитие.
Нет
Вот с этим согласен (с "Нет"), как раз IoC для начала совсем не нужен, а MVC - база, без которой и шагу ступить нельзя.
...
Рейтинг: 0 / 0
08.11.2013, 13:09:18
    #38457758
Andrew1411
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
в шормошлепстве - да. но представляете, есть задачи где нет общения с пользователем, зато сильная связанность в больших проектах вредит.
...
Рейтинг: 0 / 0
08.11.2013, 13:11:30
    #38457762
Andrew1411
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к форме из класса
Andrew1411,

наверно Hibernate, Log4J и т.д. лохи писали, раз MVC не применили :) но куда его там? )))))
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Доступ к форме из класса / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]