如何将JOptionPane与许多选项一起使用?JAVA

如何将JOptionPane与许多选项一起使用?JAVA,java,swing,joptionpane,Java,Swing,Joptionpane,我在试验不同的JOptionPane时,发现数组中有不同的选项,然后在JOptionPane上使用它。然而,我发现很难使用给定的选项,例如,我将如何使用返回选项 String[] options = new String[] {"Go ahead", "Go back", "Go forward", "close me"}; int option = JOptionPane.showOptionDialog(null, "Title", "Message",

我在试验不同的
JOptionPane
时,发现数组中有不同的选项,然后在
JOptionPane
上使用它。然而,我发现很难使用给定的选项,例如,我将如何使用返回选项

  String[] options = new String[] {"Go ahead", "Go back", "Go forward", "close me"};
      int option =  JOptionPane.showOptionDialog(null, "Title", "Message", 
            JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
            null, options, options[0]);
我试过这样做,但不起作用

    if (option == JOptionPane.options[1]){

    }
编辑:

为什么不简单

String[] options = new String[] {"Go ahead", "Go back", "Go forward", "close me"};
int option =  JOptionPane.showOptionDialog(null, "Title", "Message", 
      JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
      null, options, options[0]);

if (option != JOptionPane.CLOSED_OPTION) {
  System.out.println(options[option]);
} else {
  System.out.println("No option selected".);
}
请注意,对选项使用枚举将更容易允许使用状态或命令设计模式。例如:

import javax.swing.JOptionPane;

public class OptionPaneEgWithEnums {
   public static void main(String[] args) {
      int option = JOptionPane.showOptionDialog(null, "Title", "Message",
            JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
            State.values(), State.values()[0]);
      if (option == JOptionPane.CLOSED_OPTION) {
         // user closed the JOptionPane without selecting
      } else {
         State state = State.values()[option];
         doAction(state);
         // code to do something based selected state
      }
   }

   private static void doAction(State state) {
      System.out.println("The user has selected to " + state);
   }
}

enum State {
   AHEAD("Go Ahead"), BACK("Go Back"), FORWARD("Go Forward"), CLOSE("Close Me");
   private State(String text) {
      this.text = text;
   }

   private String text;

   public String getText() {
      return text;
   }

   @Override
   public String toString() {
      return text;
   }
}

您可以从选项窗格中获得一个int。您应该说if(option==1){。是否可能,例如,如果其中一个按钮上的文本很长,例如“Open window 2 and close window 1”,那么是否可以将它们拆分为两行,例如,在第一行打开window 2,在第二行关闭window 1。请尝试HTML“Open window 2
and close window 1”@pL4Gu33,它不工作。确定吗?在我的示例中,它工作得很好。您的数组应该如下所示:字符串[]选项=新字符串[]{“打开窗口2
并关闭窗口1”、“返回”、“前进”、“关闭我”};是否可能,例如,如果某个按钮上的文本很长,例如“打开窗口2并关闭窗口1”然后可以将它们分成两行吗?例如,在第一行打开窗口2,在第二行关闭窗口1。为什么不简单地
options[option]
?虽然@Sambhav在他的示例中给出了一个打印示例,但我不会打印出选项名称。我需要每个选项都执行不同的命令。我认为为每个选项使用if语句会更好。@seek:使用枚举可以更容易地使用状态或命令设计模式。是否可以使用switch案例而不是if语句?我已经尝试过了,但它不起作用。两秒钟后将编辑我的答案。
String[] options = new String[] {"Go ahead", "Go back", "Go forward", "close me"};
int option =  JOptionPane.showOptionDialog(null, "Title", "Message", 
      JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
      null, options, options[0]);

if (option != JOptionPane.CLOSED_OPTION) {
  System.out.println(options[option]);
} else {
  System.out.println("No option selected".);
}
import javax.swing.JOptionPane;

public class OptionPaneEgWithEnums {
   public static void main(String[] args) {
      int option = JOptionPane.showOptionDialog(null, "Title", "Message",
            JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
            State.values(), State.values()[0]);
      if (option == JOptionPane.CLOSED_OPTION) {
         // user closed the JOptionPane without selecting
      } else {
         State state = State.values()[option];
         doAction(state);
         // code to do something based selected state
      }
   }

   private static void doAction(State state) {
      System.out.println("The user has selected to " + state);
   }
}

enum State {
   AHEAD("Go Ahead"), BACK("Go Back"), FORWARD("Go Forward"), CLOSE("Close Me");
   private State(String text) {
      this.text = text;
   }

   private String text;

   public String getText() {
      return text;
   }

   @Override
   public String toString() {
      return text;
   }
}