|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
lukyanov : 2 Новичок
|
Янв 26, 2012 9:13 |
|
|
Доброго времени суток уважаемые.
У меня никак не получается реализовать следующую вещь:
НА форме1 находится лейбл и кнопка, по нажатию на которой происходит открытие диалога в котором поле вводе и кнопка. как реализовать что бы по нажатию на кнопку в диалоге диалог закрывался а на форме1 менялся текст в соответствии с текстом из поля ввода диалога ? |
|
|
|
 |
Evgin : 748 Постоянный посетитель Откуда: (SPB)
|
Янв 26, 2012 9:19 |
|
|
Лучше б написала по-пунктно что должно происходить =) не сразу понял =))))
Смотрите в сторону JFace Data Binding. _________________ Велюровый Петон приветствует Вас :-*
----------------------------
Кроме того, я думаю, что Карфаген должен быть разрушен!!!
----------------------------
javax.swing.JDesktopPane <--- Печаль
----------------------------
НЕ ФЛУДИ, КОМРАД! |
|
|
|
 |
barg : 263 Бывалый
|
Янв 26, 2012 9:23 |
|
|
В методе (н-р, open()), который открывает диалог - делаем
| Код: |
| return textField.getText() |
и результат этого метода присваиваем какой-нить переменной в классе, открывающем диалог:
| Код: |
| String s = new Dialog().open(); |
|
|
|
|
 |
lukyanov : 2 Новичок
|
Фев 03, 2012 7:18 |
|
|
|
|
|
|
 |
Evgin : 748 Постоянный посетитель Откуда: (SPB)
|
Фев 03, 2012 11:21 |
|
|
| barg писал(а): |
В методе (н-р, open()), который открывает диалог - делаем
| Код: |
| return textField.getText() |
и результат этого метода присваиваем какой-нить переменной в классе, открывающем диалог:
| Код: |
| String s = new Dialog().open(); |
|
Ужасный совет. От Вас, barg, не ожидал такого. =(
Про существование org.eclipse.jface.dialogs.InputDialog не слышали? - посмотрите как оно написано.
а про правильное проектирование не слышали?!
| Код: |
| String s = new Dialog().open(); |
За одно такое надо руки отрывать!!!
Открываем доку метода open(), который вы переопределить собираетесь и читаем:
| Цитата: |
Opens this window...
...
A window's return codes are window-specific, although two standard return codes are predefined: OK and CANCEL.
Returns:
the return code
|
Какую строку возвращать, ну вы чего?! Я как увидел ваш пример - аж поперхнулся. _________________ Велюровый Петон приветствует Вас :-*
----------------------------
Кроме того, я думаю, что Карфаген должен быть разрушен!!!
----------------------------
javax.swing.JDesktopPane <--- Печаль
----------------------------
НЕ ФЛУДИ, КОМРАД! |
|
|
|
 |
barg : 263 Бывалый
|
Фев 03, 2012 12:06 |
|
|
| Цитата: |
| Открываем доку метода open(), который вы переопределить собираетесь |
Ни в коем случае не собирался его переопределять, просто неудачно его назвал.
Мне почему-то показалось, что автору нужно простое деревянное решение.
Сам я знакомство с java начинал именно с swt (кстати, вы Evgin частично принимали в этом участие подсказками на этом форуме), который то в принципе относительно прост, и помню - тяжеловато давались все прибамбасы JFace. Не думаю, что для передачи значения из textfild - a в label между диалогами нужно сразу отправлять в data binding - поправьте, если не прав. |
|
|
|
 |
Evgin : 748 Постоянный посетитель Откуда: (SPB)
|
Фев 03, 2012 12:36 |
|
|
В databinding сразу надо отправлять после первого случая использования такого и подобного кода:
| Код: |
label = ne Label(shell, SWT.BORDER);
text = new Text(shell, SWT.BORDER);
text.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
label.setText(text.getText());
}
});
|
Вы не поверите, но многие считают это единственным верным решением, судя по тем проектам, в сорцах которых приходилось копаться.
Задача частая - решение предлагают именно такое. Один-два раза если встречается во всем проекте - нормально, а когда такой код повсеместно - это просто ахтунг.
Знать о таком решение надо, бесспорно, а применять не стоит. Это что касается биндинга.
Если open() - вы просто назвали неудачно, я беру свои слова про него обратно.
Но все-таки, согласитесь, что отделять надо - открытие окна диалога от получения введеного пользователем значения.
Если делать деревянное решение, моя версия:
| Код: |
String s = null;
InputDialog dialog = new InputDialog(shell, "", "", "", null);
if (Dialog.OK == dialog.open()) {
s = dialog.getValue();
}
|
_________________ Велюровый Петон приветствует Вас :-*
----------------------------
Кроме того, я думаю, что Карфаген должен быть разрушен!!!
----------------------------
javax.swing.JDesktopPane <--- Печаль
----------------------------
НЕ ФЛУДИ, КОМРАД! |
|
|
|
 |
barg : 263 Бывалый
|
Фев 03, 2012 15:47 |
|
|
| Цитата: |
В databinding сразу надо отправлять после первого случая использования такого и подобного кода:
| Код: |
label = ne Label(shell, SWT.BORDER);
text = new Text(shell, SWT.BORDER);
text.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
label.setText(text.getText());
}
});
|
|
мда, решение оригинальное..
Соглашусь с тем, что первый мой ответ тут в такой интерпретации (а он имел право быть так понят) должен был вызвать возмущение как минимум. |
|
|
|
 |
Arch : 9 Новичок
|
Фев 09, 2012 3:15 |
|
|
| Посоветуйте, что почитать или где прочитать, чтоб сделать не деревянное решение? Или где можно посмотреть код хорошей реализации этой проблемы? |
|
|
|
 |
NektoDev : 14 Новичок
|
Фев 09, 2012 9:32 |
|
|
| Evgin писал(а): |
Если делать деревянное решение, моя версия:
|
А как можно сделать красиво? В каком разделе SWT про это можно прочитать, а то я везде так делал =) |
|
|
|
 |
Evgin : 748 Постоянный посетитель Откуда: (SPB)
|
Фев 09, 2012 10:13 |
|
|
| NektoDev писал(а): |
| Evgin писал(а): |
Если делать деревянное решение, моя версия:
|
А как можно сделать красиво? В каком разделе SWT про это можно прочитать, а то я везде так делал =) |
Гуглите "JFace Data Binding", отправная точка - vogella.de и wiki.eclipse.org/JFace_Data_Binding и ibm.com/developerworks/opensource/library/os-ecl-jfacedb1 _________________ Велюровый Петон приветствует Вас :-*
----------------------------
Кроме того, я думаю, что Карфаген должен быть разрушен!!!
----------------------------
javax.swing.JDesktopPane <--- Печаль
----------------------------
НЕ ФЛУДИ, КОМРАД! |
|
|
|
 |
NektoDev : 14 Новичок
|
Фев 09, 2012 11:10 |
|
|
| Спасибо, буду исправляться =) |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Swing, AWT & SWT |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|