⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optiondialogtest.java

📁 core java
💻 JAVA
字号:
/**
 * @version 1.20 01 Sep 1998
 * @author Cay Horstmann
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

class ButtonPanel extends JPanel
{  public ButtonPanel(String title, String[] options)
   {  setBorder(BorderFactory.createTitledBorder
            (BorderFactory.createEtchedBorder(), title));
      setLayout(new BoxLayout(this, 
         BoxLayout.Y_AXIS));
      group = new ButtonGroup();
      
      for (int i = 0; i < options.length; i++)
      {  JRadioButton b = new JRadioButton(options[i]);
         b.setActionCommand(options[i]);
         add(b);
         group.add(b);
         b.setSelected(i == 0);
      }
   }
   
   String getSelection()
   {  return group.getSelection().getActionCommand();
   }
   
   ButtonGroup group;
}
   
public class OptionDialogTest extends JFrame 
   implements ActionListener
{  public OptionDialogTest()
   {  setTitle("OptionDialogTest");
      setSize(600, 400);
      addWindowListener(new WindowAdapter()
      {  public void windowClosing(WindowEvent e)
         {  System.exit(0);
         }
      } );

      JPanel gridPanel = new JPanel();
      gridPanel.setLayout(new GridLayout(2, 3));
      
      typePanel = new ButtonPanel("Type", 
         new String[] 
         {  "Message", 
            "Confirm", 
            "Option", 
            "Input" 
         });

      messageTypePanel = new ButtonPanel("Message Type", 
         new String[] 
         {  "ERROR_MESSAGE", 
            "INFORMATION_MESSAGE", 
            "WARNING_MESSAGE", 
            "QUESTION_MESSAGE",
            "PLAIN_MESSAGE" 
         });
         
      messagePanel = new ButtonPanel("Message", 
         new String[] 
         {  "String", 
            "Icon", 
            "Component", 
            "Other", 
            "Object[]"
         });
      
      optionTypePanel = new ButtonPanel("Confirm", 
         new String[] 
         {  "DEFAULT_OPTION", 
            "YES_NO_OPTION", 
            "YES_NO_CANCEL_OPTION", 
            "OK_CANCEL_OPTION" 
         });
         
      optionsPanel = new ButtonPanel("Option", 
         new String[] 
         {  "String[]", 
            "Icon[]", 
            "Object[]" 
         });
         
      inputPanel = new ButtonPanel("Input",
         new String[]
         {  "Text field",
            "Combo box"
         });
         
      JPanel showPanel = new JPanel();
      JButton showButton = new JButton("Show");
      showButton.addActionListener(this);
      showPanel.add(showButton);
      
      gridPanel.add(typePanel);
      gridPanel.add(messageTypePanel);
      gridPanel.add(messagePanel);
      gridPanel.add(optionTypePanel);
      gridPanel.add(optionsPanel);
      gridPanel.add(inputPanel);

      Container contentPane = getContentPane();
      contentPane.add(gridPanel, "Center");
      contentPane.add(showPanel, "South");
   }

   public Object getMessage()
   {  String s = messagePanel.getSelection();
      if (s.equals("String"))
         return messageString;
      else if (s.equals("Icon"))
         return messageIcon;
      else if (s.equals("Component"))
         return messageComponent;
      else if (s.equals("Object[]"))
         return new Object[]
         {  messageString,
            messageIcon,
            messageComponent,
            messageFont
         };
      else if (s.equals("Other"))
         return messageFont;
      else return null;
   }
   
   public Object[] getOptions()
   {  String s = optionsPanel.getSelection();
      if (s.equals("String[]"))
         return new String[] { "Yellow", "Blue", "Red" };
      else if (s.equals("Icon[]"))
         return new Icon[]
         {  new ImageIcon("yellow-ball.gif"),
            new ImageIcon("blue-ball.gif"),
            new ImageIcon("red-ball.gif")
         };
      else if (s.equals("Object[]"))
         return new Object[]
         {  messageString,
            messageIcon,
            messageComponent,
            messageFont
         };
      else 
         return null;
   }
   
   public int getType(ButtonPanel panel)
   {  String s = panel.getSelection();
      try
      {  Class cl = JOptionPane.class;
         return cl.getField(s).getInt(cl);
      }
      catch(Exception e)
      {  return -1;
      }
   }
   
   public void actionPerformed(ActionEvent evt)
   {  if (typePanel.getSelection().equals("Confirm"))
         JOptionPane.showConfirmDialog(this, 
            getMessage(),
            "Title",
            getType(optionTypePanel),
            getType(messageTypePanel));
      else if (typePanel.getSelection().equals("Input"))            
      {  if (inputPanel.getSelection().equals("Text field"))
            JOptionPane.showInputDialog(this,
               getMessage(),
               "Title",
               getType(messageTypePanel));
         else
            JOptionPane.showInputDialog(this,
               getMessage(),
               "Title",
               getType(messageTypePanel),
               null,
               new String[] { "Yellow", "Blue", "Red" },
               "Blue");
      }
      else if (typePanel.getSelection().equals("Message"))            
         JOptionPane.showMessageDialog(this,
            getMessage(),
            "Title",
            getType(messageTypePanel));
      else if (typePanel.getSelection().equals("Option"))
         JOptionPane.showOptionDialog(this, 
            getMessage(),
            "Title",
            getType(optionTypePanel),
            getType(messageTypePanel),
            null,
            getOptions(),
            getOptions()[0]);           
   }

   public static void main(String[] args)
   {  JFrame f = new OptionDialogTest();
      f.show();
   }
   
   private ButtonPanel typePanel;
   private ButtonPanel messagePanel;
   private ButtonPanel messageTypePanel;
   private ButtonPanel optionTypePanel;
   private ButtonPanel optionsPanel;
   private ButtonPanel inputPanel;
   
   private String messageString = "Message";
   private Icon messageIcon 
      = new ImageIcon("blue-ball.gif");
   private Font messageFont 
      = new Font("Serif", Font.PLAIN, 8);
   private Component messageComponent 
      = new JPanel()
         {  public void paintComponent(Graphics g)
            {  super.paintComponent(g);
               g.setFont(messageFont);
               g.drawString("Component", 0, 8);
            }
            public Dimension getMinimumSize()
            {  return new Dimension(12, 30);
            }
         };
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -