|
|
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Есть класс с формой Form1 и обычный класс. Нужно из обычного класса поменять свойства объекта на форме Сделал сеттер в классе Form1: Код: java 1. 2. 3. А в обычном классе пишу: Код: java 1. 2. Получаю шиш. Как сделать, чтобы работало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:42:56 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Стандартная вопрос у тех кто взял NetBeans на кликал там всякую ерунду абсолютно не понимая, как оно на уровне Java кода вообще работает. Буквально пару недель назад аналогичная тема была. Как же из одного класса обратиться к другому. Не понятно. Что такое объекты, классы, поля и методы понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:50:56 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
www.sql.ru/forum/1053935/peredat-stroku-v-pole-obekta-ekz-klassa-iz-drugogo-obekta-po-sobytiu ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:51:42 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЧто такое объекты, классы, поля и методы понятно? Естественно. Да, конечно можно через конструктор сделать установку значения. Интересуют, есть ли другие способы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:53:06 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
sharmankaИнтересуют, есть ли другие способы. да полно через ссылку одного объекта на другой через статическое поле через не статическое поле через слушатель через binding читайте ссылку что привел выше, смотрите туториалы по Swing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:54:40 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
sharmanka, если ваши внешние классы - являются WorkerThreads то не забывайте про особенности синхронизации в Swing. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:10:40 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
maytonsharmanka, если ваши внешние классы - являются WorkerThreads то не забывайте про особенности синхронизации в Swing. внешний классы имплементируют Runnable интерфейс. Т.е каждая нить у меня должна писать свой текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:32:07 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Поправьте меня, если я неправ. Вместо создания нового экземпляра Form1 нужно получить ссылку на существующий. Проблема в том, что создавая статический метод для возврата ссылки мне нужно оперировать с Form1, которая ни разу не статическая, о чем любезно сообщает компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:45:30 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
sharmanka, Кто мешает из не-статического кода формы (к примеру из конструктора) сохранить в статическое поле (private static Form1 instance;) ссылку на себя (instance = this; ) и через статический геттер ее получать public static Form1 getInstance(){ return instance; } ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 23:23:31 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Andrew1411, не додумался :( Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 23:32:28 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
А зачем вам статический класс GUI-окна? На мой взгляд у вас направление мысли в первом посте было абсолютно верное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 00:01:20 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Troglodit, в первом посте по всей видимости создавалась просто новая форма, не имеющая отношения к той, в которой нужно изменить текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 00:11:30 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
sharmanka, Только не забывайте при закрытии формы очищать instance, иначе горбатый коллектор ее не соберет :) если прилада многопоточная - поле instence делайте volatile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 09:45:26 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Andrew1411sharmanka, Кто мешает из не-статического кода формы (к примеру из конструктора) сохранить в статическое поле (private static Form1 instance;) ссылку на себя (instance = this; ) и через статический геттер ее получать public static Form1 getInstance(){ return instance; } ???? Форма-синглтон, вот это круто! Неучи учат других неучей, до чего скатился форум... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:20:55 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
HoBTID, 1. Есть множество примеров, когда форма единстенная. (посмотрим на диалоговые?) 2. Автор спрашивал конкретику, на что и получил конкретику. 3. Надо будет поддерживать множество форм - либо тупо сделает локатор, либо наконец почитает книжки и сделает правильно. 4. я не собираюсь учить, я отвечаю на конкретный вопрос (не правильная постановка ведет к неправильному ответу, если бы у автора одновременно было бы несколько экземпляров, он бы это упомянул, либо ССЗБ) 5. Троль на выпасе вместо ответа автору тролит. 6. И наконец. десктоп приладами я не занимаюсь (совсем). <spam>Вы, как специалист можете проконсультировать его в своем любимом ПТ по проблемам форм в 1C.</spam> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:19:14 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
HoBTIDФорма-синглтон, вот это круто! Неучи учат других неучей, до чего скатился форум... Ну, так показал бы примером как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:23:03 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
ОК, проведу небольшой ликбез. А то все троллю, да троллю, может что полезное скажу. Автору в первую очередь учить паттерн MVC. Сразу его понять конечно же не получится, как минимум будет стойкое ощущение, что контроллер не нужен. Синглтоном (т.е. хранить в статическом поле, voilatile, как правильно сказал Andrew1411) нужно сделать Главный контроллер приложения, это контроллер из паттерна MVC, но не формы, а всей программы. Дальше, главный контроллер создает другой контроллер (назовем его контроллер2), отвечающий за работу с тем, что делается в этой форме. И записывает его себе в поле, с геттером и сеттером. Контроллер2 создает модель данных того, с чем работает форма, и саму форму. Лучшее решение взаимодействия формы и модели - Binding, но, чтобы сразу не переусложнять, можно просто передать модель в конструктор формы. Вызов конструктора формы будет в контроллере2. Из любого места приложения можно получить главный контроллер, пользуясь его методами, получить контроллер2. А из него модель данных. Саму форму получать не надо! Но если не придумаете как обойтись без этого, для начала, можете даже получить форму. Вот это правильная архитектура для любых десктопных систем, в том числе и на Swing. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:44:27 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
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 - тоже не понятно. Как это всё вообще решает проблему автора не понятно в двойне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:55:32 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
HoBTID, Все верно сказано, но в переводе на русский это звучит примерно так: "ТС, просай писать, садись учить уроки". Но, учиться лучше в процессе работы. Скорее всего, Тпикстартеру лучше сейчас изучать не MVC (что, в его случае, безусловно полезно), а начать с IoC, что быстрее внедрить в нужные места. Если в приладе часть форм сделана с учетом паттерна MVC, а часть мышекодингом, - то это явная хрень. Кроме того, MVC лучше юзать как раз с IoC. таким образом, будет более правильное развитие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:00:31 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
TrogloditА зачем вам статический класс GUI-окна? Мне нужно изменять элементы на форме из другого класса. TrogloditНа мой взгляд у вас направление мысли в первом посте было абсолютно верное. Разве? Там же создавался новый экземпляр объекта формы, а не получался текущий. Andrew1411Только не забывайте при закрытии формы очищать instance, иначе горбатый коллектор ее не соберет :) если прилада многопоточная - поле instence делайте volatile Сделал и то, и другое, спасибо за замечания. Andrew1411Все верно сказано, но в переводе на русский это звучит примерно так: "ТС, просай писать, садись учить уроки". Да я бы и рад почитать про MVC и прочие интересные вещи, но к сожалению, у меня не студенческие лабы, а вполне конкретные задачи и Java всего лишь инструмент для их решения. Если код, который у меня выполняет задачу, занимает 5 строк, то зачем городить лес и его раздувать? Я понимаю, что это показывает крутой скилл программиста, знания паттернов, но мне не перед кем хвастаться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:28:32 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
Andrew1411Скорее всего, Тпикстартеру лучше сейчас изучать не MVC (что, в его случае, безусловно полезно), а начать с IoC, что быстрее внедрить в нужные места. Если в приладе часть форм сделана с учетом паттерна MVC, а часть мышекодингом, - то это явная хрень. Кроме того, MVC лучше юзать как раз с IoC. таким образом, будет более правильное развитие. Нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:45:45 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
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, ни в любой другой интерфейсной библиотеке, потому что эта библиотека ничего не знает о фактических данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:05:10 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
maytonAndrew1411Скорее всего, Тпикстартеру лучше сейчас изучать не MVC (что, в его случае, безусловно полезно), а начать с IoC, что быстрее внедрить в нужные места. Если в приладе часть форм сделана с учетом паттерна MVC, а часть мышекодингом, - то это явная хрень. Кроме того, MVC лучше юзать как раз с IoC. таким образом, будет более правильное развитие. Нет Вот с этим согласен (с "Нет"), как раз IoC для начала совсем не нужен, а MVC - база, без которой и шагу ступить нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:06:33 |
|
||
|
Доступ к форме из класса
|
|||
|---|---|---|---|
|
#18+
в шормошлепстве - да. но представляете, есть задачи где нет общения с пользователем, зато сильная связанность в больших проектах вредит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:09:18 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=201&tid=2128242]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 407ms |

| 0 / 0 |
