4

これがばかげた質問のように聞こえる場合は申し訳ありませんが、JOptionPane のカスタム ボタンをあらゆる場所で検索していました。特別なボタンを実現する方法に出くわしましたが、プログラムで使用できないようです。

    int choice;
    Object[] doors = { "Door 1", "Door 2", "Door 3" };

    JFrame frame = new JFrame();

    input = "Which door do you choose?";
    choice = JOptionPane.showOptionDialog(frame, input, 
             "Doors",
             JOptionPane.DEFAULT_OPTION,
             JOptionPane.QUESTION_MESSAGE,
             null,
             doors,
             doors[2]);

    if (car == 1 && choice.equals(doors[0])) {
        open = 3; option = 2;
    } 
    if (car == 1 && choice.equals(doors[1])) {
        open = 3; option = 1;
    } 
    if (car == 1 && choice.equals(doors[2])) {
        open = 2; option = 1;
    } 
    if (car == 2 && choice.equals(doors[0])) {
        open = 3; option = 2;
    } 
    if (car == 2 && choice.equals(doors[1])) {
        open = 1; option = 3;
    } 
    if (car == 2 && choice.equals(doors[2])) {
        open = 1; option = 2;
    } 
    if (car == 3 && choice.equals(doors[0])) {
        open = 2; option = 3;
    } 
    if (car == 3 && choice.equals(doors[1])) {
        open = 1; option = 3;
    } 
    if (car == 3 && choice.equals(doors[2])) {
        open = 2; option = 1;
    }

注:これは私のプログラム全体ではなく、問題のある側面だけです

ダイアログ ボックスのオプションは完全に表示されますが、「int は継承できません」というエラーが表示されます。誤った比較を使用したと思いますが、どうすれば修正できますか?

4

1 に答える 1

6

int を逆参照しようとしているように見えますが、int でメソッドを呼び出そうとしていること、choice を Java で実行することはできません。ドア配列で単に選択を使用しないのはなぜですか? doors[choice]?

// first check that the JOptionPane wasn't closed by the user
if (choice != JOptionPane.CLOSED_OPTION) {
  String chosenDoor = doors[choice];
}

または、int として数値として使用して車をテストしているように、選択をテストします。

于 2012-10-15T21:24:16.643 に答える