Пробую что-то порисовать в окошке по урокам ютуба. Вроде в уроках все рисуется, а у меня до тех пор, пока не попередвинаешь, поизменяешь размер окна. Видел много других примеров, иначе делалось и все получалось сразу. Хотелось бы понять, что тут не так. Может подскажете? я так полагаю, что надо что-то вызвать, чтобы перерисовалось. Просто команды нет рисовать.
package com.ex;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.net.URL;
public class Main {
public static void main(String[] args) {
JFrame jFrame = getJFrame();
//список шрифтов
String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
jFrame.add(new MyComponent());
}
static class MyComponent extends JComponent {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Font font = new Font("Arial", Font.BOLD, 20);
g2.setFont(font);
g2.drawString("Hello world!", 50, 50);
Line2D l2 = new Line2D.Double(73 , 73, 100, 100);
g2.draw(l2);
Ellipse2D el= new Ellipse2D.Double(70, 70, 170, 170);
g2.setPaint(new Color(255, 10, 10));
g2.fill(el);
Rectangle2D r2 = new Rectangle2D.Double(70, 70, 170, 170);
g2.draw(r2);
}
}
private static JFrame getJFrame() {
JFrame jFrame = new JFrame() {
};
jFrame.setVisible(true);
//завершать работу программы при закрытии
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(500, 300);
jFrame.setLocation(600, 400);
jFrame.setTitle("My app");
Toolkit toolkit = Toolkit.getDefaultToolkit(); // настройки
Dimension dimension = toolkit.getScreenSize();
// jFrame.setBounds(dimension.width / 2 - 250, dimension.height/2 - 150, 300, 300);
jFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
return jFrame;
}
}