在我的J2ME應用程序中,我有一些表單和一些在後臺運行的線程。如果在這些線程中的任何一箇中,我決定在應用程序的頂部顯示一個消息框或通知欄,我有問題不知道我是哪種表單,因此我不知道在消息框或通知之後要顯示哪種表單酒吧是隱藏的。在Java應用程序中顯示消息框或通知欄?
有沒有人有任何建議?
在我的J2ME應用程序中,我有一些表單和一些在後臺運行的線程。如果在這些線程中的任何一箇中,我決定在應用程序的頂部顯示一個消息框或通知欄,我有問題不知道我是哪種表單,因此我不知道在消息框或通知之後要顯示哪種表單酒吧是隱藏的。在Java應用程序中顯示消息框或通知欄?
有沒有人有任何建議?
你可以得到已與「Display.getCurrent()」顯示目前的形式例如,這畫布顯示在屏幕之前獲得當前形式的閃屏:
import javax.microedition.lcdui.Canvas;
/* */ import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
/* */ import javax.microedition.lcdui.Graphics;
/* */ import javax.microedition.lcdui.Image;
public class StaticSplashScreen extends Canvas
implements Runnable {
private HelloMIDlet mainMidlet;
private boolean isSplashOver;
private long currentTime;
private long previousTime;
private Form currentForm;
public StaticSplashScreen(HelloMIDlet mid) {
this.mainMidlet = mid;
currentForm = (Form) this.mainMidlet.getDisplay().getCurrent();
this.previousTime = System.currentTimeMillis();
new Thread(this).start();
}
protected void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0);
g.drawString("In the name of God", 40, 70, 0);
}
public void run() {
while (!this.isSplashOver) {
this.currentTime = System.currentTimeMillis();
if (this.currentTime - this.previousTime >= 10000L) {
this.isSplashOver = true;
}
}
this.mainMidlet.getDisplay().setCurrent(currentForm);
}
}
在這個MIDlet你可以看到兩種形式與一些commands.When按下「幫助」中的每個表單,()方法調用閃屏和和diplays 10秒後,你可以看到,重新啓動它的形式:
public class HelloMIDlet extends MIDlet implements CommandListener {
...
public void commandAction (Command command, Displayable displayable) {
...
if (command == helpCommand) {
method();
}
...
}
public Form getForm() {
if (form == null) {
form = new Form ("Welcome");
form.addCommand (getHelpCommand());
form.setCommandListener (this);
}
return form;
}
public void method() {
if (true) {
StaticSplashScreen sss = new StaticSplashScreen(this);
this.getDisplay().setCurrent(sss);
} else {
}
}
public Form getForm1() {
if (form1 == null) {
form1 = new Form ("form1");
form1.addCommand (getHelpCommand());
form1.setCommandListener (this);
}
return form1;
}
}
股票代碼是在顯示頂部提供滾動文本的對象。代碼與顯示相關聯,而不是與屏幕相關聯。您可以使用Screen.setTicker(Ticker t)方法在屏幕上放置代碼,如下面的代碼所示。
但是,您可以將同一個Ticker對象與多個屏幕相關聯。該實施方案在顯示器的某個不變部分呈現Ticker,在這種情況下,顯示在頂部。代碼不是一個項目。它直接來自java.lang.Object的派生方法爲您提供了一個線索,爲什麼一個Ticker可以綁定到顯示屏而不是屏幕。它不需要從Item派生,因爲它確實不是放置在Form中的東西。
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Ticker;
import javax.microedition.lcdui.Form;
/**
This class demonstrates use of the Ticker MIDP UI
component class.
@see javax.microedition.lcdui.Gauge
*/
public class TickerDemo extends Form
implements CommandListener
{
private String str =
"This text keeps scrolling until the demo stops...";
private Ticker ticker = new Ticker(str);
private Command back = new Command("Back", Command.BACK, 1);
private static Displayable instance;
/**
Constructor.
*/
public TickerDemo()
{
super("Ticker demo");
instance = this;
addCommand(back);
setTicker(ticker);
setCommandListener(this);
}
...
}
希望這會對你有所幫助。謝謝
你可以顯示代碼片段展示喲你的問題?最好是[SSCCE](http://www.sscce.org/「Short,Self Contained,Correct(Compilable),Example」) – gnat 2012-04-10 18:21:45
使用需要使用Canvas ....不是J2me form ... – Baba 2012-04-10 22:25:14