Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных из TextBox, Какие есть варианты? 
:(
    Опции темы
zexak
Дата 16.9.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



В проекте имеется несколько классов. Так вот в одном из классов расположен TextBox:
Код

...
public TextBox GlobalText;
...
GlobalText = new TextBox("Название поля", null, 1000, TextField.ANY);
GlobalText.addCommand(exitCommand);
GlobalText.addCommand(okCommand);
GlobalText.setCommandListener(this);
....
//Привел код этого TextBox'a, думаю что остальной код будет лишним+будет мусолить глаза :)


Так вот, из остальных классов требуется вывод введенных значений этого GlobalText'a, а вот реализовать это-меня затрудняет. При любой попытке это сделать выводится значение "null"

Как добавить значение TextBox в память и запрашивать его из других классов?
PM MAIL   Вверх
Dancer
Дата 16.9.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



либо глобальная переменная
public class MyClass {
    public static TextBox GlobalText = null;
.....
}

И вызов будет таким: 
import MyClass;
......
if(MyClass.GlobalText != null ) {
    System.out.println("Expected Text: " + MyClass.GlobalText.getString());
}
-----------------------------

либо статический метод у данного класса организовываем и дёргаем метод где нужно:
public class MyClass {
    private static TextBox GlobalText = null;

    public static String getTextFromGlobalText() {
        return (GlobalText != null) ? GlobalText.getString() : null;
    }
.....
}
И вызов будет таким: 

import MyClass;
....
    System.out.println("Expected Text: " + MyClass.getTextFromGlobalText());

------------------
Если нужно на каждом объекте это дело иметь, то тогда не делаем статическую переменную, но тогда нужно будет на нужном тебе объекте дёргать либо метод, либо обращаться к public переменной и вызывать метод getString() на твоей переменной.

========
Да и кстати, в WTK есть UIDemo, посмотри там исходники, всё на пальцах в общем то показанно.


Это сообщение отредактировал(а) Dancer - 16.9.2009, 18:36


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
zexak
Дата 16.9.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Наверно покажусь навязчивым, но все же:

C:\...\src\Test2.java:7: '.' expected
import Test;
              ^
C:\...\src\Test2.java:7: ';' expected
import Test;
               ^
2 errors
com.sun.kvem.ktools.ExecutionException
Build failed

Как я понимаю, WTK не доволен знаками препинания... Но как бы не менял, ни в какую...

Использовал глобальную переменную.

Это сообщение отредактировал(а) zexak - 16.9.2009, 21:16
PM MAIL   Вверх
hamsterKSU
Дата 17.9.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



Цитата(Dancer @  16.9.2009,  17:34 Найти цитируемый пост)
public class MyClass {    public static TextBox GlobalText = null;.....}


не вздумай такого делать. если и решаешся на глобальную переменную то делай ее хотя бы типа String

Добавлено через 3 минуты и 57 секунд
блин ну что же не понятного-то. 
уже приводили пример тебе.

В твоем случае можно так поступить:
У тебя ведь есть главный класс(класс приложения/главный поток/ или слой доступа к данным) он обычно сингелтон(класс-одиночка).

Вот в нем и заводишь переменную типа String.

В твоей формочке реализуешь обновление этого поля. 
Либо по нажатию кнопки какой-то (типа save, ok) или реагируешь на изменение поля.

Добавлено через 5 минут и 48 секунд
а если сам не могешь понять что да как, то  кинь свои классы сюда - поможем.

 И еще поставь себе нормальное IDE, а то возишься в WTK и блокноте -  производительность труда увеличиться
PM MAIL ICQ   Вверх
zexak
Дата 17.9.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Поставил Eclipse, конечно же хороший редактор  smile 
А так, в литературе, которая есть на руках, не встречал способа записи данных в память и извлечения их оттуда... Вы уж меня извините за то, что вас так допекаю  smile  но я в этом  smile 
А насчет вариантов переноса, то при просмотре примеров WTK, я наткнулся на WMADemo и думал, что данные нужно переносить методом(я процитирую):
Код

sender = new SMSSender(smsPort, display, destinationAddressBox, sendingMessageAlert);


Вот примерно так я хотел перенаправлять данные из класса в класс(наивный, да?)
Насчет глобальной переменной, ну, наверно уже наглею, но могли бы вы написать какой-нить мидлет для примера, в котором будет реализована глобальная переменная  smile 
PM MAIL   Вверх
W0LF
Дата 18.9.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



а в чем собственно проблема? делаете ее статической и юзаете из других классов


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
hamsterKSU
Дата 18.9.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



Цитата(zexak @ 17.9.2009,  19:36)
Поставил Eclipse, конечно же хороший редактор  smile 
А так, в литературе, которая есть на руках, не встречал способа записи данных в память и извлечения их оттуда... Вы уж меня извините за то, что вас так допекаю  smile  но я в этом  smile 
А насчет вариантов переноса, то при просмотре примеров WTK, я наткнулся на WMADemo и думал, что данные нужно переносить методом(я процитирую):
Код

sender = new SMSSender(smsPort, display, destinationAddressBox, sendingMessageAlert);


Вот примерно так я хотел перенаправлять данные из класса в класс(наивный, да?)
Насчет глобальной переменной, ну, наверно уже наглею, но могли бы вы написать какой-нить мидлет для примера, в котором будет реализована глобальная переменная  smile

блин, я же тебе уже показывал пример  как это делать в другой ветке http://forum.vingrad.ru/forum/topic-272549.html

А то что там SmsSender - то это класс для отправки смс(он реализует логику). а параметры в него передали через конструктор.

Между прочим  в римере который лежит в ветке http://forum.vingrad.ru/forum/topic-272549.html
реализованы  два способа, через метод setData и через коструктор.

Посмотри внимательно 
PM MAIL ICQ   Вверх
Dancer
Дата 18.9.2009, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



Дык, а причём тут мидлет то собственно?
Посмотри книжки по Java вообще.

вот 2 файла, кладёшь их в одну директорию и компилишь: javac *.java
запускаешь: java test1

Надеюсь принцип понятен и код объяснений не требует.
==============================================

file test.java
Код

final public class test {
    private static int var = 0;
    public static int global_var = -1;

    private test() {
    }

    public static int getVar() {
        return var;
    }

    public static void setVar(int i) {
        var = i;
    }
} // class test


file test1.java
Код

public class test1 {

    public static void main(String args[]) {
        Log("test.getVar()==" + test.getVar());
        test.setVar(10);
        Log("test.getVar()==" + test.getVar());
// это сделать будет нельзя 
//        test.var = -10; 
//        Log("test.var==" + test.var);
// так как var закрытая переменная
// с ней работаем лишь через методы getVar() и setVar()
// но все остальные классы которые будут обращаться test.getVar() всегда будут
// получать одно и то же значение этой переменной, так как данная переменная
// статическая (static)

// к переменной global_var можно обращаться напрямую, так как она public
        Log("test.global_var==" + test.global_var);
        test.global_var = -10; 
        Log("test.global_var==" + test.global_var);
// так как переменная global_var статическая, из других классов всегда будем иметь
// одно значение этой переменной, когда будем её читать

    }

    public static void Log(String s) {
        System.out.println(s);
    }
} // class test1



--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
hamsterKSU
Дата 18.9.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



P.S. классы принято называть с большой буквы. 
подчеркивание только в константах. 
если переменная состоит из двух слов то второе слово просто пишется с большой буквы - не global_var, а globalVar

Добавлено через 1 минуту и 7 секунд
а то в записи test.getVar() непонятно куда мы обращаеться к экземляру класса или к самому классу
PM MAIL ICQ   Вверх
ivanovpv
Дата 29.9.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 10
Всего: 28



Не робяты... Это не Java у вас, а какой-то бейсик, ей-бо...
1) Дело совсем не в J2ME, а вообще в ООП
2) Через статику - это что называется brute-force (фу как грубо....)
3) Такие вещи положено делать через геттеры и сеттеры



--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
hamsterKSU
Дата 30.9.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



про ООП полностью согласен - пример с гетерами/сетерами и конструкторами приводился ранее, но человек не хотит этого понимать.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.