у меня есть код
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.FlowLayout;
class GUI extends JFrame {
JPanel mainPanel;
public GUI(String header) {
super(header);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setLayout(new FlowLayout(FlowLayout.CENTER));
init();
add(mainPanel);
pack();
}
public void init() {
mainPanel = new JPanel(){
@Override
public void paintComponent(Graphics g) {
g.fillOval(0, 0, 50, 50);
}
};
}
}
и в моем основном методе у меня есть
GUI progam = new GUI("Title");
progam.setLocationRelativeTo(null);
progam.setVisible(true);
Если я запускаю программу, я получаю вывод:
и если я раскомментирую setLayout
, я получу вывод:
Два вопроса:
- Почему
pack()
не работает должным образом в первом случае? Разве я не должен видеть полный круг вместо того, чтобы видеть его половину? - Почему во втором выводе овал превратился в треугольник?