[JavaME] Tworzenie ikonek (Image) dla List

0

Mam problem z dodaniem ikon do pewnej listy. Widziałem to w przykładowych projektach, ale u mnie nie działa. Dostaję taki raport:

Project settings saved
Building "JavaOrganizer"
Build complete
Running with storage root C:\Users\Xet\j2mewtk\2.5.2\appdb\DefaultColorPhone
Running with locale: Polish_Poland.1250
Running in the identified_third_party security domain
Unable to create MIDlet JOMIDlet
java.lang.IllegalArgumentException
at javax.microedition.lcdui.ChoiceGroup.<init>(+129)
at javax.microedition.lcdui.List.<init>(+61)
at JOMIDlet.<init>(+32)
at java.lang.Class.runCustomCode(+0)
at com.sun.midp.midlet.MIDletState.createMIDlet(+34)
at com.sun.midp.midlet.Selector.run(+22)
Execution completed.
3462973 bytecodes executed
383 thread switches
1676 classes in the system (including system classes)
18510 dynamic objects allocated (561764 bytes)
8 garbage collections (481480 bytes collected)

Lista ma 9 pozycji, na pierwszych trzech ma być widoczna ikona "plus.png" ($PROJECT_DIR$/res/plus.png). Wszystkie ikonki są przechowywane w osobnej klasie IMAGES w zmiennych statycznych.

A oto kody klasy ikonek i użycia jej w liście:

/** 
	Images for lists
*/
class IMAGES
{
	public static Image[] MAIN_MENU;
	public static Image[] MANAGE = null;
	public static Image[] PLAN = null;
	public static Image[] HOMEWORK = null;
	public static Image[] TEST = null;
	public static Image[] GRADE = null;
	public static Image[] EVENT = null;
	public static Image[] PLAN_EDIT = null;
	public static Image[] AHW_SUBJ_CG = null; // add_homework_subject_choice_group
	public static Image[] HW_FORMS = null; // homework_forms
	
	public static void createImages () {
		try {
			Image plus = Image.createImage("/plus.png");
			MAIN_MENU = new Image[] { plus, plus, plus };
		} catch ( Exception e ) {
			System.out.println("exception: " + e.getMessage());
			e.printStackTrace();
		}

	}
	
} /// endclass I`code>_________________________`// fragment JOMIDlet.JOMIDlet()
		mainList = new List(LANG.MAIN_MENU, Choice.IMPLICIT, LISTS.MAIN_MENU, IMAGES.MAIN_MENU);
		mainList.setSelectCommand( CMD_MAIN_SELECT );
		mainList.addCommand( CMD_EXIT );
		mainList.setCommandListener(new ListCommandListener());
0

Nie wywołujesz IMAGES.createImages() przed tworzeniem mainList ?

0

Wywołuję, tylko za mało kodu skopiowałem...

// większy fragment JOMIDlet

	public JOMIDlet() {
		// Create shortcut to display object
		display = Display.getDisplay(this);
		
		IMAGES.createImages();
		
		/////
		// Create lists
		/////
		
		mainList = new List(LANG.MAIN_MENU, Choice.IMPLICIT, LISTS.MAIN_MENU, IMAGES.MAIN_MENU);
		mainList.setSelectCommand( CMD_MAIN_SELECT );
		mainList.addCommand( CMD_EXIT );
		mainList.setCommandListener(new ListCommandListener());

(nie wklejam całego kodu, bo ma ponad 700 linii, które działały dobrze do momentu dopisania ikonek)

0

Wygląda na to, że LISTS.MAIN_MENU ma długość inną niż 3.

0

Owszem - jak pisałem ma 9 pozycji. Ale jak ustawić, żeby 3 pierwsze miały ikonkę, a reszta nie? Czy się w ogóle da?

Próbowałem ustawiać w pozostałych null i inne tego typu rzeczy, ale nic nie działa.

EDIT

O kurde - znalazłem błąd :-D
Cały problem jest w mojej genialnej umiejętności liczenia. Elementów MAIN_MENU jest 8.

Bardzo przepraszam was za wysilanie palców w celu napisania mi odpowiedzi, ale ja po prostu tak mam, że nie umiem dodawać i mnożyć (dlatego nigdy nie miałem 6 ze sprawdzianu - zawsze się mylę na podstawowych działaniach).

Temat do zamknięcia/usunięcia, bo nic nie wnosi oprócz tego, że trzeba dokładnie liczyć elementy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1