Jython-대화 상자

Dialog 개체는 사용자가 상호 작용하는 기본 창 위에 표시되는 창입니다. 이 장에서는 스윙 라이브러리에 정의 된 사전 구성된 대화 상자를 볼 것입니다. 그들은MessageDialog, ConfirmDialogInputDialog. JOptionPane 클래스의 정적 메소드 때문에 사용할 수 있습니다.

다음 예제에서 파일 메뉴에는 위의 세 대화 상자에 해당하는 세 개의 JMenu 항목이 있습니다. 각각은OnClick 이벤트 핸들러.

file = JMenu("File")
msgbtn = JMenuItem("Message",actionPerformed = OnClick)
conbtn = JMenuItem("Confirm",actionPerformed = OnClick)
inputbtn = JMenuItem("Input",actionPerformed = OnClick)
file.add(msgbtn)
file.add(conbtn)
file.add(inputbtn)

OnClick () 핸들러 함수는 메뉴 항목 버튼의 캡션을 검색하고 각각의 showXXXDialog () 메서드를 호출합니다.

def OnClick(event):
   str = event.getActionCommand()
   if str == 'Message':
      JOptionPane.showMessageDialog(frame,"this is a sample message dialog")
   if str == "Input":
      x = JOptionPane.showInputDialog(frame,"Enter your name")
      txt.setText(x)
   if str == "Confirm":
      s = JOptionPane.showConfirmDialog (frame, "Do you want to continue?")
      if s == JOptionPane.YES_OPTION:
         txt.setText("YES")
      if s == JOptionPane.NO_OPTION:
         txt.setText("NO")
      if s == JOptionPane.CANCEL_OPTION:
         txt.setText("CANCEL")

메뉴에서 메시지 옵션을 선택하면 메시지가 나타납니다. 입력 옵션을 클릭하면 입력을 요청하는 대화 상자가 나타납니다. 입력 된 텍스트는 JFrame 창의 텍스트 상자에 표시됩니다. 확인 옵션을 선택하면 YES, NO 및 CANCEL의 세 버튼이있는 대화 상자가 나타납니다. 사용자의 선택이 텍스트 상자에 기록됩니다.

전체 코드는 다음과 같습니다.

from javax.swing import JFrame, JMenuBar, JMenu, JMenuItem, JTextField
from java.awt import BorderLayout
from javax.swing import JOptionPane
frame = JFrame("Dialog example")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setLocation(100,100)
frame.setSize(400,300)
frame.setLayout(BorderLayout())

def OnClick(event):
   str = event.getActionCommand()
   if str == 'Message':
      JOptionPane.showMessageDialog(frame,"this is a sample message dialog")
   if str == "Input":
      x = JOptionPane.showInputDialog(frame,"Enter your name")
      txt.setText(x)
   if str == "Confirm":
      s = JOptionPane.showConfirmDialog (frame, "Do you want to continue?")
      if s == JOptionPane.YES_OPTION:
         txt.setText("YES")
      if s == JOptionPane.NO_OPTION:
         txt.setText("NO")
      if s == JOptionPane.CANCEL_OPTION:
         txt.setText("CANCEL")

bar = JMenuBar()
frame.setJMenuBar(bar)

file = JMenu("File")
msgbtn = JMenuItem("Message",actionPerformed = OnClick)
conbtn = JMenuItem("Confirm",actionPerformed = OnClick)
inputbtn = JMenuItem("Input",actionPerformed = OnClick)
file.add(msgbtn)
file.add(conbtn)
file.add(inputbtn)
bar.add(file)
txt = JTextField(10)
frame.add(txt, BorderLayout.SOUTH)
frame.setVisible(True)

위의 스크립트가 실행되면 메뉴에 세 가지 옵션이있는 다음과 같은 창이 표시됩니다.

메세지 박스

입력 상자

대화 확인