public class InputPanel extends JPanel{ public static int shapeType; //1: Rectangle; 2: Oval; 3: Line public static boolean isFilled; //whether or not the shape is filled public static Color color; //color of the shape public InputPanel(){ JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(Color.GRAY); setPreferredSize(new Dimension(200,500)); JButton rect = new JButton("Rectangle"); JButton oval = new JButton("Oval"); JButton line = new JButton("Line"); JRadioButton fill = new JRadioButton("Filled:"); JButton color1 = new JButton("Color.."); rect.addActionListener(new rectListener()); oval.addActionListener(new ovalListener()); line.addActionListener(new lineListener()); isFilled = fill.isSelected(); color1.addActionListener(new colorListener()); panel.add(rect); panel.add(oval); panel.add(line); panel.add(fill); panel.add(color1); this.setVisible(true); } } public class PaintPanel extends JPanel{ public static int x1, y1, x2, y2; ArrayList shapeList = new ArrayList(); public PaintPanel(){ JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); panel.setBackground(Color.WHITE); setPreferredSize(new Dimension(500, 500)); this.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { PaintPanel.x1 = e.getX(); PaintPanel.y1 = e.getY(); } @Override public void mouseReleased(MouseEvent e) { PaintPanel.x2 = e.getX(); PaintPanel.y2 = e.getY(); if(InputPanel.shapeType == 1){ shapeList.add(new Rectangle(PaintPanel.x1, PaintPanel.y1, PaintPanel.x2, PaintPanel.y2, InputPanel.isFilled)); } if(InputPanel.shapeType == 2){ shapeList.add(new Oval(PaintPanel.x1, PaintPanel.y1, PaintPanel.x2, PaintPanel.y2, InputPanel.isFilled)); } if(InputPanel.shapeType == 3){ shapeList.add(new Line(PaintPanel.x1, PaintPanel.y1, PaintPanel.x2, PaintPanel.y2)); } repaint(); } }); this.setVisible(true); } @Override public void paintComponent(Graphics g){ super.paintComponent(g); for(Shape s : shapeList){ s.draw(g); } } } public class PaintGUI { public static void main(String[] args){ JFrame frame = new JFrame("Shape Drawer!"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new InputPanel()); frame.add(new PaintPanel()); frame.pack(); frame.setVisible(true); } } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("Shape Drawer!"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //set the layout, add your panels frame.pack(); frame.setVisible(true); } }); } frame.add(new InputPanel()); frame.add(new PaintPanel()); frame.add(new InputPanel(), BorderLayout.CENTER); frame.add(new PaintPanel(), BorderLayout.CENTER);