Панель полностью окрашена в красный цвет.
Это потому, что вы установили фон и больше ничего не делалиживопись ...
Почему я не понимаю?Как я могу получить это?
Это не способ сделать это.Почему вы звоните paintImmediately
?Вот что говорится в документации:
Окрашивает указанную область в этом компоненте и всех его потомках, которые перекрывают регион, немедленно.
редко нужно вызывать этометод .В большинстве случаев более эффективно вызывать перерисовку, которая откладывает фактическое рисование и может объединять избыточные запросы в один вызов рисования.Этот метод полезен, если необходимо обновить отображение во время отправки текущего события.
Я предлагаю вам ознакомиться с рисованием в AWT / Swing.
Чтобы получить что-то вроде этого
, вы можете изменить свой код следующим образом:
JFrame fr = new JFrame();
JPanel p = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(20, 20, 500, 500);
}
};
p.setBackground(Color.RED);
fr.add(p);
fr.setVisible(true);
fr.setSize(200, 200);