61

62 // Экземпляр данного MID-лета.

63 private static I18NDemo2 instance;

64

65 /**

66 Конструктор No-arg.

67 */

68 public I18NDemo2()

69 {

70 super();

71 instance = this;

72 }

73

74 /*"

75 Получает экземпляр данного класса, который существует

76 в действующем приложении.

77

78 @выдает экземпляр, созданный при запуске

79 приложения…

80 */

81 public static I18NDemo2 getlnstance ()

82 {

83 return instance;

84 {

85

86 /**

87 Запускает MID-лет. Получает текущее название

88 региональной настройки. Использует его для создания

89 имени файла, который содержит локализованные

90 ресурсы региональной настройки. Файл ресурса

91 находится в файле JAR приложения.

92 */

93 public void startApp()

94 {

95 // Извлекает региональную настройку из программного

96 // обеспечения AMS. Региональная настройка должна быть

97 // установлена до выполнения данного MID-лета.

98 locale =

99 System.getProperty("microedition.locale");

100

101 // Названия файлов локализованных ресурсов, соответствующих

102 // форме: <язык>_<страна>.txt.

103 // Создает строку имени файла и передает ее в

104 // метод, который открывает файл и извлекает

105 // содержимое.

106 resourceFile = locale +".txt";

107 int status = loadResources(resourceFile);

108

109 if (status < 0)

110 {

111 quit();

112 return;

113 }

114

115 // Создаем элемент Displayable. Получаем

116 // локализованную String, которая представляет

117 // заголовок Form.

118 String formTitle = getResource ("title");

119 form = new HelloForm2(formTitle);

120

121 // Это приложение просто отображает одну.

122 // форму, созданную выше.

123 display = Display.getDisplay (this);

124 display.setCurrent(form);

125 }

126

127 /**

128 Загружает определенные пользователем ресурсы приложения

129 из указанного файла. Файл является частью файла JAR

130 приложения, расположенного на реальном устройстве.

131 J2MEWTK хранит файл в файле JAR приложения, расположенном

132 в директории приложения bin/.

133

134 @param file — имя определенного пользователем файла

135 ресурса приложения.

136 */

137 private int loadResources(String file)

138 {

139. Class с = getClass ();

140

141 if (file == null)

142 {

143 return -1;

144 }

145 InputStream is = null;

146 is = с. getResourceAsStream(file);

147 if (is == null)

148 {

149 return -1;

150 }

151 Reader reader = new InputStreamReader(is);

152 processStream(reader);

153 return 0;

154 }

155

156 /**

157

158 */

159 private void processStream(Reader stream)

160 {

161 if (stream == null)

162 {

163 return;

164 }

165 StringBuffer key = new StringBuffer();;

166 StringBuffer value = new StringBuffer ();;

167 while (true)

168 {

169 // Считываем строку. Предполагается, что каждая строка

170 // содержит ключ и значение,

171 // отделенные двоеточием. Если -1, значит

172 // мы достигли конца файла.

173 key.deletef(), key.length());

174 value.delete(0, value.length());

175 int status = readLine(key, value, stream);

176 if (status == -1)

177 {

178 break;

179 }

180

181 // Вставляем этот ресурс в хэшированную таблицу

182 // ресурсов приложения.

183 resources.put(key, value);

184 }

185 }

186

187 /**

188 Считывает и обрабатывает следующую не пустую строку

189 из потока. Формат строки ожидается следующий

190 <ключ>[\t]*:[и]*<значение>, где

191 <ключ> and <значение> являются метками, состоящими

192 из буквенных символов или знаков пунктуации, но не

193 из пустых знаков пробела.

194 */

195 private int readLine(StringBuffer key,

196 StringBuffer value,

197 Reader stream)

198 {

199 if (key == null || value == null ||


Логин
Пароль
Запомнить меня