import java.awt.Font;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class SwingTester extends JFrame
{
   private JLabel label1;
   private JLabel label2;
   private JTextField textField;
   private JButton button;
   private JComboBox<String> combo;
   
   static String[] NAMES = {"Dropdown", "Is", "This", "In", "The", "Right", "Place?"};

   public SwingTester()
   {
      super("Swing Tester");
      buildGUI();

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      pack();
   }

   private void buildGUI()
   {
      label1 = new JLabel();
      Font labelFont = label1.getFont();
      label1.setText("Default JLabel font: "
                  + labelFont.getFontName() + " "
                  + labelFont.getSize());
      
      label2 = new JLabel("Default text field font:");
      textField = new JTextField(10);
      textField.setText(textField.getFont().getFontName()
                        + " "
                        + textField.getFont().getSize());
      JPanel panel1 = new JPanel();
      panel1.add(label2);
      panel1.add(textField);
      
      button = new JButton("Click me to see JOptionPane");
      combo = new JComboBox<>(NAMES);
      JPanel panel2 = new JPanel();
      panel2.add(button);
      panel2.add(combo);
      
      JPanel mainPanel = new JPanel();
      
      BoxLayout layout = new BoxLayout(mainPanel, BoxLayout.Y_AXIS);
      mainPanel.setLayout(layout);
      mainPanel.setAlignmentX(LEFT_ALIGNMENT);
      
      mainPanel.add(label1);
      mainPanel.add(panel1);
      mainPanel.add(panel2);

      button.addActionListener((event) -> {
         String message = "JOptionPane.showMessageDialog() with some text in it";

         JOptionPane.showMessageDialog(this, message);
      });
      
      this.add(mainPanel);
   }

   public static void main(String[] args) throws Exception
   {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      SwingTester window = new SwingTester();
      window.setLocation(800, 500);
      window.setVisible(true);
   }
}
