Почему не отображается квадрат?
Учу java. Писал код программы, которая создает фрейм и рисует черный квадрат на нём.
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferStrategy;
public class Paint extends Canvas implements Runnable {
boolean running = true;
@Override
public void run() {
while (running){
//Пометка1
render();
}
}
public void render() {
//Пометка 2
BufferStrategy bs = getBufferStrategy();
if(bs == null) {
createBufferStrategy(2);
requestFocus();
return;
}
Graphics g = bs.getDrawGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, 50, 50);
g.dispose();
bs.show();
}
public void start() {
new Thread(this).start();
}
public static void main(String[] args) {
Paint paint = new Paint();
paint.setPreferredSize(new Dimension(400,300));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setSize(800, 600);
frame.setVisible(true);
frame.setResizable(false);
frame.add(paint, BorderLayout.CENTER);
frame.pack();
paint.start();
}
}
Если вместо render() (в коде Пометка 1) вставить его код (Пометка 2), квадрат не отображается, хотя по логике должно быть всё то же самое. Как это можно объяснить?
Источник: Stack Overflow на русском