import java.awt.* ;   
		   
public class HelloX
{
	public static void main(String[] args)	{
		if (1 == args.length)
			HelloX gui = new HelloX(args[0]);
		else
			System.err.println("Usage:java HelloX <Display string>");
				
	}
    // Конструктор HelloX: принимает строку в качестве параметра. 
    // Конструкторы GUI создали окно верхнего уровня 
    // и HelloXComponent. 
	public HelloX(String strDisplay){
		// Создание окна верхнего уровня и его менеджера компоновки
		Frame f = new Frame("HelloX Example Program");
		f.setLayout(new BorderLayout());
		f.resize(300, 200);
        // Создание компонента string display. 
        HelloXComponent c = new HelloXComponent(strDisplay); 
        // Совместное размещение этих двух частей, 
        f.add("Center", c); 
	}
}

import java.awt.*;
public class HelloXComponent extends Canvas {
	// Конструктор класса берет display string и хранит ее. 
	public HelloXComponent(String strDisplay) { 
       m_strDisplay = new String(strDisplay); 
	} 
	
    // Метод paint () вызывается при необходимости отображения 
    // компонента. 
    public void paint(Graphics g) { 
		String strDisplay = "Hello," + m_strDisplay + "!";
		FontMetrics fm = g.getFontMetrics();
		int cxText = (size().width / 2) - (fm.stringWidth(strDisplay) /2);
		int cyText = (size().height / 2) - 1 ;
		//  int cyText = (size().height / 2) - (fm.textHeight(strDisplay) /2); 

		g.drawString(strDisplay, cxText, cyText);
	}
    // Переменные, объявленные как private, 
    private String m_strDisplay = null; 
}
