2014-09-11 2 views
0

나는 자바를 배우려고 노력하는 동안 며칠을 지내면서 이것을 해결하려고 노력 해왔다. 나는 메시지를 표시하기 위해 옵션 창을 사용하는 방법을 스스로 가르쳐 왔고 최근에 버튼을 사용하려고했지만 배열 요소를 통과하려고 할 때 코드에서 더 이상 운이 없다. 지금까지 내 코드가있다. 나는 JOptionPane을 만들 수 있었고 버튼을 눌렀을 때해야 할 일을 말했지만 코드를 실행할 때 아무 것도하지 않습니다. 누구든지 나를 도울 수 있습니까? 백 슬래시 이미 그의 코멘트에 말했듯이JOptionPane 배열 요소

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class Tinker01 
{ 

    public static void main(String[] args) 
    { 
     AdultTicket adultTicket = new AdultTicket(); 
     ChildTicket childTicket = new ChildTicket(); 
     OverFiftyTicket overFiftyTicket = new OverFiftyTicket(); 
     JFrame frame = new JFrame(); 

     String[] options = 
      {"Adult Ticket" , "Childs Ticket" , "Over Fifty Ticket" }; 
     JOptionPane.showOptionDialog(frame, "What ticket would you like to buy? " + " ", " ", 
      JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[2]); 

     if (options.equals(options[0])) 
     { 
      JOptionPane.showMessageDialog(frame, "Your ticket price is £" + adultTicket.getAdultTicket()); 
     } 
     else if (options.equals(options[1])) 
     { 
      JOptionPane.showMessageDialog(frame, "Your ticket price is £" + childTicket.getChildTicket()); 
     } 
     else if (options.equals(options[2])) 
     { 
      JOptionPane.showMessageDialog(frame, "Your ticket price is £" + overFiftyTicket.getOverFiftyTicket()); 
     } 
     } 
} 
+0

배열과 같은 코드를 다시 작성할 수 있습니다 신중 코드를 더 읽기 오라클 튜토리얼 – mKorbel

+1

에, JComboBox를 생성합니다'options.equals (옵션 [0])'이 할 일을 무엇 ? '진실한'것으로 평가 될 것인가? – BackSlash

+1

JOptionPane.showOptionDialog – user3757014

답변

0

음, options.equals(options[0]) 적 false를 반환합니다. 달성하고자하는 것은 다음과 같습니다.

String[] options = {"Adult Ticket" , "Childs Ticket" , "Over Fifty Ticket" }; 
int result = JOptionPane.showOptionDialog(frame, 
     "What ticket would you like to buy?", " ", 
     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
     null, options, options[2]); 

if (result == JOptionPane.YES_OPTION) 
{ 
    JOptionPane.showMessageDialog(frame, "Your ticket price is £" + adultTicket.getAdultTicket()); 
} 
else if (result == JOptionPane.NO_OPTION) 
{ 
    JOptionPane.showMessageDialog(frame, "Your ticket price is £" + childTicket.getChildTicket()); 
} 
else if (result == JOptionPane.CANCEL_OPTION) 
{ 
    JOptionPane.showMessageDialog(frame, "Your ticket price is £" + overFiftyTicket.getOverFiftyTicket()); 
} 

if 문이 참이어야한다는 점에 유의하십시오. 사용자가 단추 중 하나를 클릭하지 않고 대화 상자를 종료하면 resultJOptionPane.CLOSED_OPTION이됩니다.

JOptionPane에 대한 자세한 내용은 JavaDoc을 참조하십시오.

2

잠시 시간을내어 How to Make Dialogs으로 이동하십시오. 당신은 입력을 기대하고 있는데, 그것은 당신이 체크하고 싶은 것이므로, showInputDialogs 중 하나를 사용해야합니다. Getting the User's Input from a Dialog을 참조하면 String[]을 정적 메서드에 전달할 수 있고 옵션의 콤보 박스로 렌더링되며 확인할 수있는 정확한 문자열을 반환합니다. 옵션 대화 상자가 예/아니오 타입 입력에 대한 더로

import javax.swing.JOptionPane; 

public class InputPaneDemo { 

    public static void main(String[] args) { 
     String[] possibilities = {"Adult Ticket" , "Childs Ticket" , "Over Fifty Ticket" }; 
     String s = (String)JOptionPane.showInputDialog(
          null, 
          "What ticket would you like to buy?", 
          "Ticket Dialog", 
          JOptionPane.PLAIN_MESSAGE, 
          null, 
          possibilities, 
          possibilities[0]); 
     switch(s) { 
      case "Adult Ticket" : System.out.println("Buy Adult"); break; 
      case "Childs Ticket" : System.out.println("Child Adult"); break; 
      case "Over Fifty Ticket" : System.out.println("Over Fifty Adult"); break; 
     } 
    } 
} 

enter image description here

문맥 비슷해,이, 더 적절한 방법처럼 보인다.

1

JOptionPane.showOptionDialog는 선택한 옵션을 나타내는 int를 반환합니다. 당신은 JOptionPane에 전달이

public static void main(String[] args) 
{ 
    AdultTicket adultTicket = new AdultTicket(); 
    ChildTicket childTicket = new ChildTicket(); 
    OverFiftyTicket overFiftyTicket = new OverFiftyTicket(); 
    JFrame frame = new JFrame(); 

    String[] options = 
     {"Adult Ticket" , "Childs Ticket" , "Over Fifty Ticket" }; 
    int option = JOptionPane.showOptionDialog(frame, "What ticket would you like to buy? " + " ", " ", 
     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[2]); 

    switch(option) { 
     case 0: JOptionPane.showMessageDialog(frame, "Your ticket price is £" + adultTicket.getAdultTicket()); 
       break; 
     case 1: JOptionPane.showMessageDialog(frame, "Your ticket price is £" + childTicket.getChildTicket()); 
       break; 
     case 2: JOptionPane.showMessageDialog(frame, "Your ticket price is £" + overFiftyTicket.getOverFiftyTicket()); 
       break; 
     default: JOptionPane.showMessageDialog(frame, "No ticket selected");   
    } 

    } 

}