Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.image.BufferStrategy;
- import java.util.Calendar;
- public class MyJFrame extends BetterJFrame {
- public static void main(String[] args) {
- MyJFrame jFrame = new MyJFrame();
- jFrame.startDrawingLoop();
- }
- int framesCount = 0;
- @Override
- public void myDraw(Graphics2D graphics, int dt) {
- //РИСОВАТЬ ТУТ
- framesCount++;
- graphics.setColor(Color.RED);
- graphics.setFont(new Font(null, 0, 50));
- graphics.drawString("Со старта программы прошло:" + getTimeFromStartMillis() + " мс.", 100, 100);
- graphics.drawString("Средний fps:" + framesCount / (getTimeFromStartMillis() / 1000.0), 100, 200);
- Calendar c = Calendar.getInstance();
- String time = "Время %d:%d:%d.%d";
- graphics.drawString(String.format(time, c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), c.get(Calendar.SECOND), c.get(Calendar.MILLISECOND)), 100, 300);
- }
- }
- abstract class BetterJFrame extends JFrame {
- private long lastFrameEnd;
- private long startTime;
- public BetterJFrame() {
- setExtendedState(JFrame.MAXIMIZED_BOTH);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setVisible(true);
- createBufferStrategy(2);
- lastFrameEnd = System.currentTimeMillis();
- startTime = System.currentTimeMillis();
- }
- public void startDrawingLoop() {
- while (true) {
- long dt = System.currentTimeMillis() - lastFrameEnd;
- lastFrameEnd = System.currentTimeMillis();
- draw(dt);
- }
- }
- private void draw(long dt) {
- BufferStrategy bs = getBufferStrategy();
- Graphics2D bkG = (Graphics2D) bs.getDrawGraphics();
- bkG.clearRect(0, 0, getWidth(), getHeight());
- try {
- myDraw(bkG, (int) dt);
- } catch (Exception e) {
- e.printStackTrace();
- }
- bkG.dispose();
- bs.show();
- Toolkit.getDefaultToolkit().sync();
- }
- public int getTimeFromStartMillis() {
- return (int) (System.currentTimeMillis() - startTime);
- }
- public abstract void myDraw(Graphics2D graphics, int dt);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement