У меня есть JLayeredPane. На что я помещаю несколько компонентов. Эти компоненты являются классами, расширяющими jPanel. Все компоненты размещены в одном слое глубины. Каждый компонент может иметь или не иметь другой компонент/компоненты полностью/частично выше/ниже него. Когда я нажимаю на компоненты, щелкается самый верхний.
Как проверить, есть ли еще компоненты ниже топомоста в том месте, где я щелкнул? Как я могу «передать» событие щелчка одному из этих или многим из этих компонентов ниже?
РЕДАКТИРОВАТЬ: рабочий пример
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.*;
public class JavaJLayeredPane {
JFrame frame;
JLayeredPane layeredPane;
JPanel Panel1;
JPanel panel;
public void createUI()
{
frame = new JFrame("Items one ove the other");
frame.setPreferredSize(new Dimension(600, 400));
frame.setLayout(new BorderLayout());
layeredPane = new JLayeredPane();
frame.add(layeredPane, BorderLayout.CENTER);
layeredPane.setBounds(0, 0, 600, 400);
ArrayList<Color> colorList = new ArrayList<Color>();
colorList.add(Color.red);
colorList.add(Color.yellow);
colorList.add(Color.blue);
colorList.add(Color.green);
colorList.add(Color.cyan);
for (int i=0; i<5; i++){
String mytext="no"+ i;
Panel1 = new myarea(mytext);
Panel1.setBackground(colorList.get(i));
if (i==0){Panel1.setBounds(210, 110, 20, 20);}
if (i==1){Panel1.setBounds(200, 100, 150, 150);}
if (i==2){Panel1.setBounds(250, 110, 170, 120);}
if (i==3){Panel1.setBounds(180, 130, 110, 110);}
if (i==4){Panel1.setBounds(450, 150, 50, 50);}
layeredPane.add(Panel1, new Integer(0), 0);
}
panel = new JPanel();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
JavaJLayeredPane overlapPane = new JavaJLayeredPane();
overlapPane.createUI();
}
public class myarea extends JPanel implements MouseListener{
public String areaname;
public myarea(String myname) {
addMouseListener(this);
areaname=myname;
}
//LISTENERS
@Override
public void mousePressed(MouseEvent evt){
}
@Override
public void mouseReleased(MouseEvent evt){
}
@Override
public void mouseClicked(MouseEvent evt){
if(evt.getButton() == MouseEvent.BUTTON1){
JOptionPane.showMessageDialog(null,areaname ) ;
}
}
@Override
public void mouseEntered(MouseEvent evt){
}
@Override
public void mouseExited(MouseEvent evt){
}
}
}
Если мы нажмем на прямоугольник, который находится внутри другого, мы получим его имя. Как проверить, есть ли внизу другой прямоугольник, и если да, то как получить его свойства?