java-me - 如何使用 j2me Canvas 获取用户的输入?这可能吗?

标签 java-me textinput midp lcdui

我目前正在尝试学习 J2ME 并构建一个连接四的游戏(你们中的一些人可能知道这是“四连胜”)。除了一件让我发疯的事情之外,我的游戏的所有方面或多或少都已经正常工作了!这当然是从用户那里获取文本!

对于游戏的两人模式,我希望能够允许每个玩家输入他们的名字。我正在努力寻找不使用主 Midlet 的文本输入的工作示例。

例如 java2x.com 上的示例只需使用一个 midlet(没有类或 Canvas 或任何东西)。

就目前情况而言,我的应用程序的主 midlet 启动方法只是打开一个主菜单类:

    package midlet;

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

public class Main extends MIDlet {
    public void startApp() { 
        MainMenu mm = new MainMenu();
        showScreen(mm);
    }

    public static void showScreen(Displayable screen) {
        Display.getDisplay(instance).setCurrent(screen);
    }

    public void pauseApp() {
    }

    public static void quitApp() {
        instance.notifyDestroyed();
    }

    public void destroyApp(boolean unconditional) {
    }
}

主菜单类如下:

 package view;

    import javax.microedition.lcdui.*;
    import lang.*;
    import model.*;
    import midlet.Main;

    public class MainMenu extends List implements CommandListener {

        private Command ok = new Command(StringDefs.currDefs.getString("TEXT_OK"), Command.OK, 1);

        public MainMenu() {
            super(StringDefs.currDefs.getString("TEXT_TITLE"), List.IMPLICIT);
            // we we add in the menu items
            append(StringDefs.currDefs.getString("TEXT_PLAY1"), null);
            append(StringDefs.currDefs.getString("TEXT_PLAY2"), null);
            append(StringDefs.currDefs.getString("TEXT_HIGHSCORETABLE"), null);
            append(StringDefs.currDefs.getString("TEXT_HELP"), null);
            append(StringDefs.currDefs.getString("TEXT_QUIT"), null);
            this.addCommand(ok);
            this.setCommandListener(this);
        }

        public void commandAction(Command c, Displayable d) {
            if (c == ok) {
                int selectedItem = this.getSelectedIndex();
                if (selectedItem != -1) {
                    switch (selectedItem) {
                        case 0:
                            GameBoard gameBoard = new model.GameBoard();
                            GameCanvasOnePlayer board = new GameCanvasOnePlayer(gameBoard);
                            Main.showScreen(board);
                            break;
                        case 1:
                            GameBoard gameBoardTwo = new model.GameBoard();
                            GameCanvasTwoPlayer GameCanvasTwoPlayer = new GameCanvasTwoPlayer(gameBoardTwo);
                            Main.showScreen(GameCanvasTwoPlayer);
                            break;
                        case 2:
                            HighScores hc = new HighScores();
                            midlet.Main.showScreen(hc);
                            break;
                        case 3:
                            Help he = new Help();
                            midlet.Main.showScreen(he);
                            break;
                        case 4:
                            QuitConfirmation qc = new QuitConfirmation();
                            midlet.Main.showScreen(qc);
                            break 
                    }
                }
            }
        }
    }

当从此菜单中选择两人游戏(上述开关中的情况 1)时,我希望出现两个文本框,以便我可以获取并存储两个玩家姓名。

解决这个问题的最佳方法是什么?这对于 Canvas 来说是可能的吗?你知道我在哪里可以找到相关的例子或者至少可以找到一些可能有帮助的东西吗?

最佳答案

您可以: 1.让用户以丑陋的方式输入他的输入Textbox (占据整个屏幕) 2.使用我很久以前从头开始编写的文本框控件,可用here 看起来像这样(显示 3 个文本字段):

alt text

关于java-me - 如何使用 j2me Canvas 获取用户的输入?这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975263/

相关文章:

flutter - 如何在 Flutter 的消息中实现用户提及?

java-me - Java ME 应用程序在模拟器中运行良好,但在部署到 N70 时崩溃。有什么方法可以确定崩溃的原因吗?

java - J2ME Wireless Toolkits 有什么区别,该选哪个?

黑莓:程序化 "Add to contacts"

reactjs - 如何垂直对齐 inputAdornment,使其保持在多行 MUI TextField 的顶部

java - J2ME 中的图像区域交换

reactjs - 使用redux-form按下下一个键盘按钮后如何使用useRef Hook 选择下一个TextInput

java - J2ME Https 连接不工作

java - 有没有用Java实现的语言?

java - Java 中的死锁 : When they occur?