import javax.swing.JFrame; import java.awt.Container; public class PhysicsLab { public static void main(String[] args) { LabFrame labFrame = new LabFrame(); labFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); labFrame.setVisible(true); } } class LabFrame extends JFrame { public LabFrame() { setTitle("Blocks and Springs Laboratory"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); BlockSpringConfiguration bsConfig = new BlockSpringConfiguration(); LabPanel labPanel = new LabPanel(bsConfig); bsConfig.setLabPanel(labPanel); // to repaint view when model changes InsertElementListener ieListener = new InsertElementListener(bsConfig); Simulator sim = new Simulator(bsConfig); SimulatorListener sListener = new SimulatorListener(sim); LabMenuBar menuBar = new LabMenuBar(ieListener, sListener); MouseListener mListener = new MouseListener(bsConfig, labPanel); labPanel.addMouseMotionListener(mListener); labPanel.addMouseListener(mListener); Container contentPane = getContentPane(); contentPane.add(labPanel); setJMenuBar(menuBar); } public static final int DEFAULT_WIDTH = 500; public static final int DEFAULT_HEIGHT = 400; }