---
title: "Problem med UI i MIDlet"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/142728-problem-med-ui-i-midlet"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "front"
published: "2006-02-20T02:14:06.000Z"
updated: "2006-02-27T21:51:27.000Z"
replies: 4
views: 452
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/142728-problem-med-ui-i-midlet"
---

# Problem med UI i MIDlet

## #1 — front, 2006-02-20T02:14Z

Har lite problem med mitt UI i en MIDlet. Försöker växla mellan att visa en List och en Form, men det vill sig inte riktigt.

I mitt program så anropar jag metoden Display.setCurrent() med en Form som argumet. Sedan går programmet genom lite information för att slutligen pressentera den i en List genom att anropa Display.setCurrent() med List:en som argument.

Problemet är att min List visas först, och inte Form som det är tänkt.
Antar att det är ett problem med trådar... men efter ett antal misslyckde försök med synchronized så är jag nära att ge upp.

Har gjort ett litet testprogram som jag försöker arbeta med för att hitta problemet. Detta program ska visa en Form, låta programmet sova 5 sek och sedan visa en List.
Nu så sover det 5 sek (utan att visa en Form under tiden) och visar sen en List.
Skulle vara gött om någon kan klura ut problemet med det programmet, så ska jag nog kunna gå vidare därifrån.

```
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class ListTest extends MIDlet {
	
	private Display display;
	private List list;
	private Form form;
	
	public ListTest() {
		super();
		display = Display.getDisplay(this);
		list = new List("List", Choice.IMPLICIT);
		form = new Form("Form");
		
		list.append("List", null);
		form.append("Form");

		display.setCurrent(form);
		
		try {
			Thread.sleep(5000);
		} catch (Exception e) {}
		
		display.setCurrent(list);
	}

	protected void startApp() {
	}

	protected void pauseApp() {

	}

	protected void destroyApp(boolean arg) {

	}

}
```

Permalänk: https://www.webforum.nu/p/142728

## #2 — MinOrk, 2006-02-20T08:26Z

Vet inte om det hjälper (programmerar inte i Java), men i Delphi kan man köra Application.ProcessMessages för att programmet skall köra klart allt det håller på med innan det går vidare (ungefär). Finns det inget sånt?

Permalänk: https://www.webforum.nu/p/1769802

## #3 — front, 2006-02-20T14:32Z

Jo det finns lite liknande trick i Java, men jag får inget att fungera...

Hittade detta i midp 2.0 dokumentationen:

> Requests that a different Displayable object be made visible on the display. The change will typically
> not take effect immediately. It may be delayed so that it occurs between event delivery method calls,
> although it is not guaranteed to occur before the next event delivery method is called. The
> setCurrent() method returns immediately, without waiting for the change to take place.

Känns inte så smidigt :x

Permalänk: https://www.webforum.nu/p/1769938

## #4 — Lime, 2006-02-21T07:46Z

Nu vet jag inte hur det görs i Midlets men i normala GUI-program med multipla komponenter så ser jag alltid till att skapa ett event i den komponent jag vill visa. Går det att göra något liknande??

Permalänk: https://www.webforum.nu/p/1770156

## #5 — front, 2006-02-27T21:51Z

Sådär, nu har jag äntligen fått lite tid över för att kolla på det här problemet igen.
Försökte med Limes tips, men jag fick det inte att fungera.

Sökte då runt på java.sun.com ett par vändor och hittade tillslut det jag sökte:
[Networking, User Experience, and Threads](http://developers.sun.com/techtopics/mobility/midp/articles/threading/index.html)

Permalänk: https://www.webforum.nu/p/1772343

---

Tråden på webben: https://www.webforum.nu/amne/java/142728-problem-med-ui-i-midlet
