我想实现的结果就是,我用数组分别存储了位置信息和文字信息.现在我已经到的就是,利用这些位置信息绘制矩形,利用鼠标事件实现,当选择其中矩形的时候,矩形变成红色,里面其中包括了矩形的位置信息的判断.遇到了难题,就是我想把2个矩形框子或者多个矩形框子合并.前提是我选中其中一个矩形框,按shift键,在选择另一个矩形框(当然选择的时候框子也变红色),此时选择一个合并按钮,选中的矩形合并成一个矩形.就是判断起左边,上边,下边和右边的坐标,取最大值.同时原来的矩形框就消失了.不知道该怎么实现.请帮帮忙.附代码.下面是我现在所实现的代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class RectChoos extends JFrame {
 private static final long serialVersionUID = 1L;
 int[] a = { 100, 200, 300, 99 , 47, 199, 350};
 int[] b = { 50, 150, 250, 49 , 37, 149, 300};
 int[] c = { 50, 50, 50, 80 , 40, 80, 60};
 int[] d = { 50, 50, 50, 80 , 40, 80, 60};
 String[] str = { "显示第一个", "显示第二个", "显示第三个", "显示第四个","显示第五个","显示第六个" ,"显示第七个"};
 JPanel jp = new MyJPanel();
 int selected=-1;
 final JTextField jt = new JTextField(); public static void main(String[] args) {
  new RectChoos();
 } public RectChoos() {
  add(jp, BorderLayout.CENTER);
  add(jt, BorderLayout.NORTH);
  jp.addMouseListener(new MouseAdapter() {
   public void mousePressed(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();
    ArrayList list = new ArrayList();
    int k = 0;
    for (int i = 0; i < 7; i++) {
     if (x >= a[i] && x <= (a[i] + c[i]) && y >= b[i]
       && y <= (b[i] + d[i])) {
      list.add(new Integer(i));
      Integer[] nums = (Integer[]) list.toArray(new Integer[0]);
      k++;
      if (k == 1){
       jt.setText(str[i]);
       selected=i;
       repaint();
      }
      else if (k == 2) {
       int a1 =nums[0].intValue();
       int a2 = nums[1].intValue();
       if ((a[a1] + c[a1]) < (a[a2] + c[a2])){
        jt.setText(str[a1]);
        selected=a1; 
        repaint();
       }
       else{
        jt.setText(str[a2]);
        selected=a2; 
        repaint();
       }
      }
     }
    }
   }  });
  setSize(800, 600);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setVisible(true);
 } class MyJPanel extends JPanel {
     private static final long serialVersionUID = -724828842932429886L;
  public void paint(Graphics g) {
   for (int i = 0; i < 7; i++) {
    System.out.println(selected);
    if(selected==i)
     g.setColor(Color.red);
    else
     g.setColor(Color.black);
    g.drawRect(a[i], b[i], c[i], d[i]);
   }
  }
 }