Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中ShowOptionDialog的替代方案_Java - Fatal编程技术网

Java中ShowOptionDialog的替代方案

Java中ShowOptionDialog的替代方案,java,Java,所以现在我有 public boolean start(){ boolean validInput = false; String input = null; int nextMove; Object[] options = { "Move Hek", "Move Back", "Exit Game" }; int newEnemyAtMoveNo = 0; do{

所以现在我有

    public boolean start(){        
        boolean validInput = false;   
        String input = null;
        int nextMove;
        Object[] options = { "Move Hek", "Move Back", "Exit Game" };
        int newEnemyAtMoveNo = 0;
        do{
            displayCharPositions();
            if(!checkOgreAlive()){                
                System.out.println("Ogre Dead!!");
                JOptionPane.showMessageDialog(null, "Hek Died! \nGame Over!");
                return false;
          }
            input = Array.get(moves, new Random().nextInt(8)).toString(); 

                    nextMove = JOptionPane.showOptionDialog(null, "What will you do next? " + Ogre , "Your move",
                    JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
                    null, options, options[0]);
            if(nextMove == JOptionPane.YES_OPTION)
            {           
                validInput = moveCharacter(Ogre,input);
                if(!validInput){
                    if(!input.equals("E"))
                        System.out.println("Invalid move! Try Again");
                }
                else {                
                    moveNo ++;
                    System.out.println("Move No.: " + (moveNo+1));
                    moveEachEnemy();
                    if(moveNo % 3 == 0)                    
                        newEnemyAtMoveNo = new Random().nextInt(3);                
                    if(moveNo % 3 == newEnemyAtMoveNo)
                        enterNewEnemy();                
                }}
        }while(nextMove != JOptionPane.CLOSED_OPTION && nextMove != JOptionPane.CANCEL_OPTION);
        int saveResult = JOptionPane.showConfirmDialog(null, "Would you like to save the game?", null, JOptionPane.YES_NO_OPTION);
        if(saveResult == JOptionPane.YES_OPTION)
            return true;
        else
            return false;

    }
是否有弹出框的替代方法,例如,我可以在Gui上放置按钮来替换输入框

但是,如果我没有停止循环的东西(例如showMessageDialog),程序将运行到完成


因此,基本上,我可以拥有与showMessageDialog相同的功能,但Gui上的按钮可以代替弹出的对话框吗?

可以,但您需要使用自己的控件定义一个新的
JDialog
JFrame
,与您以前的fram交互。从当前的JFrame是否不可能?因为它还有其他需要同时访问的控件,我不希望同时打开两个窗口,事实上,你可以做任何你想添加的事情,我想你可以参考SUN/ORACLE的java gui totrial