2015-11-02 154 views
0

为什么确认对话框不起作用?我花了很长时间试图弄清楚这一点。我得到以下错误:JOptionPane确认对话框

PokemonDemo.java:40: error: incompatible types: int cannot be converted to String response = JOptionPane.showConfirmDialog(null, "You are a " + intro.getGender() + ". Is that correct?", JOptionPane.YES_NO_OPTION, response);

我试图改变响应字符串(是的,我用.equals()方法时,我这样做),但没有任何反应。即使程序中没有int,我仍然会得到错误。请让我知道,如果你需要我的对象的代码,但我不明白为什么它需要在这种情况下。

public static void main(String [] args) 
{ 
    String holder; 
    int response; 

    Pokemon intro = new Pokemon(); 

    JOptionPane.showMessageDialog(null, "Hello there!"); 
    JOptionPane.showMessageDialog(null, "Glad to meet you!"); 
    JOptionPane.showMessageDialog(null, "Welcome to the world of Pokémon. My name is Oak."); 
    JOptionPane.showMessageDialog(null, "People affectionately refer to me as the Pokémon Professor."); 
    JOptionPane.showMessageDialog(null, "For some people, Pokémon are pets. Others use them for battling."); 
    JOptionPane.showMessageDialog(null, "As for myself... I study Pokémon as a profession."); 
    JOptionPane.showMessageDialog(null, "But first tell me a little bit about yourself..."); 

    do 
    { 
     do 
     { 
      holder = JOptionPane.showInputDialog("Now tell me, are you a boy, or are you a girl?"); 
      intro.setGender(holder); 
     }while(!(intro.getGender().equals("Boy") || intro.getGender().equals("boy") || intro.getGender().equals("BOY") || intro.getGender().equals("Girl") || intro.getGender().equals("girl") || intro.getGender().equals("GIRL"))); 

     if(intro.getGender().equals("Boy") || intro.getGender().equals("boy") || intro.getGender().equals("BOY")) 
     { 
      holder = "boy"; 
      intro.setGender(holder); 
     } 
     else if(intro.getGender().equals("Girl") || intro.getGender().equals("girl") || intro.getGender().equals("GIRL")) 
     { 
      holder = "girl"; 
      intro.setGender(holder); 
     } 

       response = JOptionPane.showConfirmDialog(null, "You are a " + intro.getGender() + ". Is that correct?", JOptionPane.YES_NO_OPTION, response); 

       if(response == JOptionPane.NO_OPTION) 
       { 
        intro.setConfirmationOne("no"); 
       } 
       else if(response == JOptionPane.YES_OPTION) 
       { 
        intro.setConfirmationOne("yes"); 
       } 
    }while(intro.getConfirmationOne().equals("No") ||* intro.getConfirmationOne().equals("no") || intro.getConfirmationOne().equals("NO")); 

回答

0

你我thod与JOptionPane的任何可用方法都不匹配。

的选项有:

static int showConfirmDialog(Component parentComponent, Object message) 

static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType) 

static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType) 

static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon) 

但你使用:

JOptionPane.showConfirmDialog(null, String, int, int) 

试着改变你的方法:

JOptionPane.showConfirmDialog(null, "You are a " + intro.getGender() + ". Is that correct?", "Title", JOptionPane.YES_NO_OPTION); 
0

根据你的问题:

PokemonDemo.java:40: error: incompatible types: int cannot be converted to String response = JOptionPane.showConfirmDialog(null, "You are a " + intro.getGender() + ". Is that correct?", JOptionPane.YES_NO_OPTION, response);

的showConfirmDialog的返回一个整数值,而不是字符串。 更改String responseint response和一个整数状态EVAL你的条件(例如,0这是确定的,1它取消) 读解DOC Documentaction

编辑

了错误的方法,下一个在accepteds

enter image description here

再见!

+0

'response'已经是一个int –

+0

见大通Henslee答案,你的方法不符合JOptionPane的方法。你应该看到类似这样的东西:类型JOptionPane中的方法showConfirmDialog(Component,Object,String,int)不适用于参数(null,String,int,int)' –

0

我猜你的问题是:

response = JOptionPane.showConfirmDialog(null, "You are a " + 
     intro.getGender() + ". Is that correct?", 
     JOptionPane.YES_NO_OPTION, response); 

应该是:

response = JOptionPane.showConfirmDialog(null, "You are a " + 
     intro.getGender() + ". Is that correct?", 
     "YOUR TITLE", 
     JOptionPane.YES_NO_OPTION, response); 

javadoc,我想你要使用这个方法:

public static int showConfirmDialog(Component parentComponent, 
       Object message, 
       String title, // <-- this is what is missing 
       int optionType, 
       int messageType) 
         throws HeadlessException