import java.awt.Container;
import java.awt.Font; 
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class HelloTest 
{  public static void main (String args[]) 
   {  HelloFrame frame = new HelloFrame();
      frame.show();
   }
}

class HelloFrame extends JFrame
{  public HelloFrame()
   {  final int HORIZONTAL_SIZE = 300;
      final int VERTICAL_SIZE = 300;
      final String title = "HelloTest";

      
      setSize(HORIZONTAL_SIZE, VERTICAL_SIZE);
      setTitle(title);
      
      WindowCloser listener = new WindowCloser();
      addWindowListener(listener);
      
      panel = new HelloPanel();
      panel.setMessageSize(DEFAULT_SIZE);
      panel.setMessageText("Hello, World!");

      Container contentPane = getContentPane();
      contentPane.add(panel, "Center");
   }
   
   private HelloPanel panel;
   private static final int DEFAULT_SIZE = 12;

   private class WindowCloser extends WindowAdapter
   {  public void windowClosing(WindowEvent event)
      {  System.exit(0);
      }
   }
}

class HelloPanel extends JPanel
{  public HelloPanel()
   {  messageX = 100;
      messageY = 100;
   }
   
   public void paintComponent(Graphics g)
   {  super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
      Font messageFont = new Font("Serif", Font.PLAIN, messageSize);
      g2.setFont(messageFont);
      g2.drawString(messageText, messageX, messageY);
   }

   public void setMessageText(String text)
   {  messageText = text;
      repaint();
   }

   public void setMessageSize(int size)
   {  messageSize = size;
      repaint();
   }
   
   private int messageX;
   private int messageY;
   private String messageText;
   private int messageSize;
}
