import javax.swing.*; class App { static ObjectCollection mainCollection; private static void initWindow() { // create a window frame and set the title in the toolbar JFrame window = new JFrame("Testing"); // when we close the window, stop the app window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // create the jpanel to draw on. // this also initializes the game loop initObjects(); Screen screen = new Screen(mainCollection); // add the jpanel to the window window.add(screen); window.addKeyListener(screen); window.addMouseListener(screen); window.addMouseMotionListener(screen); // don't allow the user to resize the window window.setResizable(false); // fit the window size around the components (just our jpanel). // pack() should be called after setResizable() to avoid issues on some platforms window.pack(); // open window in the center of the screen window.setLocationRelativeTo(null); // display the window window.setVisible(true); } public static void main(String[] args) { // invokeLater() is used here to prevent our graphics processing from // blocking the GUI. https://stackoverflow.com/a/22534931/4655368 // this is a lot of boilerplate code that you shouldn't be too concerned about. // just know that when main runs it will call initWindow() once. SwingUtilities.invokeLater(App::initWindow); } public static void initObjects(){ mainCollection = new ObjectCollection(); mainCollection.addObject(new Object3d(new PointComp[]{ new PointComp(-10,-10,-10), new PointComp(-10,-10,10), new PointComp(-10,10,-10), new PointComp(-10,10,10), new PointComp(10,-10,-10), new PointComp(10,-10,10), new PointComp(10,10,-10), new PointComp(10,10,10) }, new int[][]{ {0,2,3,1}, {4,5,7,6}, {0,1,5,4}, {1,3,7,5}, {3,2,6,7}, {2,0,4,6}, }, true)); } }