// Select2.java click on points, connect the dots import java.awt.*; import java.awt.event.*; import java.text.*; import java.io.*; import javax.swing.*; public class Select2 extends JFrame { MyJPanel panel; private JDesktopPane theDesktop; int x, y, b; int r1x1 = 100; // red rectangle int r1y1 = 120; int r1x2 = 200; int r1y2= 250; int r2x1 = 180; // blue rectangle int r2y1 = 220; int r2x2 = 300; int r2y2= 350; Color color1 = Color.red; Color color2 = Color.blue; Select2() { setTitle("Select2"); setSize(400,450); // see "dimension" below for smaller size setBackground(Color.white); setForeground(Color.black); // set up plot area theDesktop = new JDesktopPane(); getContentPane().add(theDesktop); // Create internal frame JInternalFrame frame = new JInternalFrame( "Plot area", true, true, true, true); // attach panel to internal frame Container container = frame.getContentPane(); panel = new MyJPanel(); container.add(panel, BorderLayout.CENTER); // set size of internal frame to size of its contents frame.pack(); // uses class Dimension theDesktop.add(frame); panel.addMouseListener (new mousePressHandler()); frame.setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); setVisible(true); } class mousePressHandler extends MouseAdapter { public void mousePressed (MouseEvent e) { x = e.getX(); y = e.getY(); b = e.getButton(); if(inrect(x,y,r1x1,r1y1,r1x2,r1y2)) color1 = Color.green; else color1 = Color.red; if(inrect(x,y,r2x1,r2y1,r2x2,r2y2)) color2 = Color.green; else color2 = Color.blue; requestFocus(); System.out.println("at x="+x+" y="+y+" b="+b); // debug print // panel.repaint(); repaint(); } } public boolean inrect(int x, int y, int x1, int y1, int x2, int y2) { if(xx2) return false; if(yy2) return false; return true; } class MyJPanel extends JPanel { MyJPanel(){} // default, just to have "paint" dependent public void paintComponent(Graphics g) { // draw objects g.setColor(Color.black); g.drawString("select an object with the mouse", 20, 50); g.setColor(color1); g.fillRect(r1x1, r1y1, r1x2-r1x1, r1y2-r1y1); g.setColor(color2); g.fillRect(r2x1, r2y1, r2x2-r2x1, r2y2-r2y1); } // end paintComponent // return dimensions for sizing public Dimension getPreferredSize() { return new Dimension(380, 380); } } // end MyJPanel public static void main(String args[]) { new Select2(); } }