Java me 按钮图像问题
你好。我想问你一件事。我知道这对你来说可能很容易,但对我来说可能很难。我学习新的J2ME。我想知道本周编程语言的基础知识。我有这样一个案例:Java me 按钮图像问题,java-me,midp,lcdui,Java Me,Midp,Lcdui,你好。我想问你一件事。我知道这对你来说可能很容易,但对我来说可能很难。我学习新的J2ME。我想知道本周编程语言的基础知识。我有这样一个案例: class DrawImageCanvas extends Canvas { static Image image; static Image image2; static Image image3; static Image image4; static Image image5; static Imag
class DrawImageCanvas extends Canvas {
static Image image;
static Image image2;
static Image image3;
static Image image4;
static Image image5;
static Image image6;
static String string;
int count;
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
// Fill the background using black
g.setColor(0xefffff);
g.fillRect(0, 0, width, height);
// Load an image from the MIDlet resources
if (image == null && image2 == null && image3 == null && image4 == null && image5 == null && image6 == null) {
try {
image = Image.createImage("/http.png");
image2 = Image.createImage("/Back.png");
image3 = Image.createImage("/next.png");
image4 = Image.createImage("/refresh.png");
image5 = Image.createImage("/stop.png");
image6 = Image.createImage("/Bookmark.png");
string = new String("Disini tempat halaman web ditampilkan");
} catch (IOException ex) {
g.setColor(0xffffff);
g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
return;
}
}
g.drawImage(image, 5, 5, Graphics.TOP | Graphics.LEFT);
g.drawImage(image2, 90, 5, Graphics.TOP | Graphics.LEFT);
g.drawImage(image3, 120, 5, Graphics.TOP | Graphics.LEFT);
g.drawImage(image4, 150, 5, Graphics.TOP | Graphics.LEFT);
g.drawImage(image5, 180, 5, Graphics.TOP | Graphics.LEFT);
g.drawImage(image6, 210, 5, Graphics.TOP | Graphics.LEFT);
g.drawString(string, 5, 36, Graphics.TOP | Graphics.LEFT);
}
}
我想知道如何将图像更改为图像按钮(按键功能)。请帮忙
我试图添加按键事件的代码,但这让我感到困惑 然后我尝试添加图形,但。。我想它只在画布上使用 这是我的新代码,这是模拟结果作为最后的结果
public void startApp() {
display = Display.getDisplay(this);
exit = new Command("Exit", Command.EXIT, 1);
form = new Form("");
form.addCommand(exit);
form.setCommandListener(this);
try {
Image image = Image.createImage("/http.png");
Image image2 = Image.createImage("/Back.png");
Image image3 = Image.createImage("/next.png");
Image image4 = Image.createImage("/refresh.png");
Image image5 = Image.createImage("/stop.png");
Image image6 = Image.createImage("/Bookmark.png");
form.append(new ImageItem(null, image, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null));
form.append(new ImageItem(null, image2, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null));
form.append(new ImageItem(null, image3, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null));
form.append(new ImageItem(null, image4, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null));
form.append(new ImageItem(null, image5, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null));
form.append(new ImageItem(null, image6, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_NEWLINE_AFTER, null));
display.setCurrent(form);
}catch (java.io.IOException e){
System.err.println(e);
}
display.setCurrent(form);
}
但问题是。。我不知道如何使图像作为按钮。
我是J2me的新手,请帮助您可以保留指示遍历顺序的按钮的某种数据结构。然后,您可以在画布上侦听按键事件,并根据按下的按键(例如,左、右、上、下、选择等)更新当前处于焦点的按钮(使用数据结构中的简单索引)。可以扩展绘制方法,在具有焦点的图像周围绘制某种边界 现在,当您听到选择键按下时,您将知道哪个按钮具有焦点,因此执行哪个操作 更高级的问题是在每次按键后刷新(重新绘制屏幕)以更新图像等,以显示有焦点的图像。您不希望重新绘制整个屏幕,而是可以定义屏幕区域,根据哪些按钮将发生更改(即以前有焦点的按钮和现在有焦点的按钮)重新绘制
另一种选择是不使用低级canvas类,而是考虑使用像LWUIT这样的框架,它提供按钮等和布局管理器,很像Swing。这可能比尝试使用低级API绘制(从外观上看是浏览器)要容易得多。在J2ME中不能在画布上创建按钮,但也有其他选择:
- 使用javax.microedition.lcdui.Form,添加一个带有外观
按钮的ImageItem,向ImageItem添加一个命令
item.setDefaultCommand(new Command("Back", Command.ITEM, 1);
您可能还想看看LWUIT的文档。它是Sun发布的开源图形库。尝试将ImageItem对象的外观模式设置为Item.BUTTON,例如
ImageItem item = new ImageItem(null, image, ImageItem.LAYOUT_LEFT, null, Item.BUTTON);
还可以尝试向ImageItem添加命令
item.setDefaultCommand(new Command("Back", Command.ITEM, 1);
最后定义CommandListener:
item.setItemCommandListener(/* itemCommandListener */);
我仍然对这件案子了如指掌。。我想把我的代码发到你的邮箱。我需要你的帮助。你在哪方面有问题?你在我的另一个答案中试过我的建议吗?是的,我试过你的建议。。。问题是当我尝试向ImageItem添加命令时。具体问题是什么?StackOverflow不是论坛;如果你有新问题,请提出新问题。如果您想在问题中包含更多信息,请。如果你想与回答问题的人进行交流,你可以给他们留言。