#java #java-me #lwuit #lwuit-resource-editor
#java #java-me #lwuit #lwuit-редактор ресурсов
Вопрос:
Я новичок в LWUIT, и хотя я нахожу его очень интересным в использовании, у меня возникла проблема предварительного просмотра всего, что MIDlet
я создаю. Каждый раз, когда я запускаю MIDlet
в эмуляторе, я получаю ArrayOutOfBOundException
отображение в виде формы на экране эмулятора и завершу работу только после нажатия OK на форме.
Это мой код
import javax.microedition.midlet.*;
import com.sun.lwuit.*;
import com.sun.lwuit.events.*;
import com.sun.lwuit.Form;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
import java.io.IOException;
public class Ruwwa extends MIDlet implements ActionListener {
public void startApp() {
Display.init(this);
Form f = new Form("");
f.setTitle("Mairuwa Portal");
Label bottomText = new Label();
bottomText.setText("Welcome to the Mairuwa Portal");
bottomText.setTextPosition(Component.CENTER);
f.addComponent(bottomText);
Command exitCommand = new Command("Exit");
f.addCommand(exitCommand);
f.addCommandListener(this);
f.show();
try {
Resources r = Resources.open("/res/working.res");
UIManager.getInstance().setThemeProps(r.getTheme("Mairuwa Theme"));
} catch (IOException ioe) {
// Do something here.
}
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void actionPerformed(ActionEvent ev) {
Label label = new Label();
label.setText("Initiating IO, please wait...");
Display.getInstance().invokeAndBlock(new Runnable() {
public void run() {
// perform IO operation...
}
});
label.setText("IO completed!");
// update UI...
}
}
Он отобразил форму с этим кодом, но не отобразил ее в созданной мной теме.Название темы — «working.res», и я включил ее в папку res в папке проекта.Спасибо
Комментарии:
1. Покажите нам свой код, и мы, возможно, сможем помочь
Ответ №1:
Во время выполнения вашего кода я получаю illegalargumentexception
эту строку, bottomText.setTextPosition(Component.CENTER);
.
Потому что вы не можете установить позицию текста метки как Component.CENTER
. Вы должны использовать позицию текста метки как LEFT/RIGHT/BOTTOM/TOP
. Если вы измените положение текста метки, как я упоминал, это будет работать должным образом.
Итак, если вы получаете ArrayOutOfBOundException
, вы допустили ошибку в каком-то другом месте. Попробуйте отладить ваше приложение и выяснить, где вы допустили ошибку.
Обновить:
Display.init(this);
try {
Resources r = Resources.open("/res/working.res");
UIManager.getInstance().setThemeProps(r.getTheme("Mairuwa Theme"));
} catch (IOException ioe) {
// Do something here.
}
// your code.
Комментарии:
1. Я сделал то, что вы сказали мне, как упоминалось. Проблема, с которой я сталкиваюсь, заключается в том, что ЯРЛЫК действительно отображался, но он не отображался в теме. Тема вообще не появлялась. Я не могу поставить ярлык на тему и другие компоненты графического интерфейса. спасибо
2. Вы вызвали
Resource
после показаForm
. Это неправильно. Попробуйте вызватьResource
приведенный ниже изDisplay.init(this);
. Посмотрите на мое обновление.3. Путь к теме, вероятно, также неверен. Если тема находится в корне jar, она должна быть / не /res.
4. @ Shai, если бы мы добавили
res
папку в библиотеки и свойства, это должно сработать. Верно?