package ru.mai.dep806.frame;

/**
 * Created by K_A_Volchica on 17.06.2015.
 */
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

public class Frame {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                SimpleFrame frame = new SimpleFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
                frame.setTitle("Таблица умножения");
                frame.setResizable(true);
            }
        });
    }
}
//фрейм с компонентами
class SimpleFrame extends JFrame{

    public SimpleFrame(){
        add (new Components());
        pack();
    }


}

class Components extends JComponent {


    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGHT = 200;


    public void paintComponent(Graphics2D g)
    {

        String message = "Введите два положительных числа меньше пятидесяти";
        Font f = new Font("Arial", Font.BOLD, 12);
        g.setFont(f);
       //Определяем размеры текстового сообщения
        FontRenderContext context = g.getFontRenderContext();
        Rectangle2D bounds = f.getStringBounds(message, context);

        //Определяем координаты верхнего левого угла текста
        double x = ((getWidth()) - bounds.getWidth()) / 2;
        double y = ((getHeight()) - bounds.getHeight()) / 2;

        //сложить подъём с координатой y, чтобы достигнуть базовой линии
        double ascent = -bounds.getY();
        double baseY = y + ascent;

        //вывод сообщения
        g.drawString(message, (int) x, (int) y);
        g.setPaint(Color.blue);

        //рисуем базовую линию
        g.draw(new Line2D.Double(x, baseY, x + bounds.getWidth(), baseY));
        //ограничивающий прямоугольник
        Rectangle2D rect = new Rectangle2D.Double(x, y, bounds.getWidth(), bounds.getHeight());
        g.draw(rect);
    }
    public Dimension getPreferredSize() {
        return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }

}

