Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. package com.company;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.image.BufferStrategy;
  6. import java.util.Calendar;
  7.  
  8.  
  9. public class MyJFrame extends BetterJFrame {
  10.  
  11. public static void main(String[] args) {
  12. MyJFrame jFrame = new MyJFrame();
  13. jFrame.startDrawingLoop();
  14. }
  15.  
  16. int framesCount = 0;
  17.  
  18. @Override
  19. public void myDraw(Graphics2D graphics, int dt) {
  20. //РИСОВАТЬ ТУТ
  21. framesCount++;
  22. graphics.setColor(Color.RED);
  23. graphics.setFont(new Font(null, 0, 50));
  24. graphics.drawString("Со старта программы прошло:" + getTimeFromStartMillis() + " мс.", 100, 100);
  25. graphics.drawString("Средний fps:" + framesCount / (getTimeFromStartMillis() / 1000.0), 100, 200);
  26.  
  27. Calendar c = Calendar.getInstance();
  28. String time = "Время %d:%d:%d.%d";
  29. 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);
  30. }
  31. }
  32.  
  33.  
  34. abstract class BetterJFrame extends JFrame {
  35. private long lastFrameEnd;
  36. private long startTime;
  37.  
  38. public BetterJFrame() {
  39. setExtendedState(JFrame.MAXIMIZED_BOTH);
  40. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41. setVisible(true);
  42. createBufferStrategy(2);
  43. lastFrameEnd = System.currentTimeMillis();
  44. startTime = System.currentTimeMillis();
  45.  
  46. }
  47.  
  48. public void startDrawingLoop() {
  49. while (true) {
  50. long dt = System.currentTimeMillis() - lastFrameEnd;
  51. lastFrameEnd = System.currentTimeMillis();
  52. draw(dt);
  53. }
  54. }
  55.  
  56. private void draw(long dt) {
  57. BufferStrategy bs = getBufferStrategy();
  58. Graphics2D bkG = (Graphics2D) bs.getDrawGraphics();
  59.  
  60. bkG.clearRect(0, 0, getWidth(), getHeight());
  61.  
  62.  
  63. try {
  64. myDraw(bkG, (int) dt);
  65. } catch (Exception e) {
  66. e.printStackTrace();
  67. }
  68.  
  69. bkG.dispose();
  70. bs.show();
  71. Toolkit.getDefaultToolkit().sync();
  72. }
  73.  
  74. public int getTimeFromStartMillis() {
  75. return (int) (System.currentTimeMillis() - startTime);
  76. }
  77.  
  78. public abstract void myDraw(Graphics2D graphics, int dt);
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement