Во-первых, вы создаете и отображаете JFrame
, который не является экземпляром game
, поэтому нет никаких шансов, что он раскрасит то, что у вас есть в game
методе *1004*.
*.1006 * Обычно вы вообще не хотите создавать подкласс
JFrame
для пользовательской рисования, просто создайте подкласс
JPanel
и установите его в качестве панели содержимого фрейма.
Также не делайте 't переопределить paint
, но paintComponent
, который является методом, ответственным за рисование текущего компонента.
Вы также должны вызвать родительский метод paintComponent
, чтобы убедиться, что все обычные операции очистки происходятправильно.
Также условно, имена классов должны начинаться с заглавной буквы.
И последнее: сделайте фрейм видимым только после того, как вы добавили все свои компоненты, или вы можете столкнуться с визуальнымглюки когда-нибудь.
Собираем все вместе:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
class Game extends JPanel {
@Override
public void paintComponent(final Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
Line2D line = new Line2D.Double(60, 90, 150, 100);
g2.draw(line);
}
public static void main(final String args[]) {
Game l = new Game();
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("Hello world");
frame.setContentPane(l);
frame.setVisible(true);
}
}