У меня есть (1) JPanel, содержащий (2) JPanel с BoxLayout. (2) JPanel может содержать любое количество (n) JPanels с FlowLayout (нет заказов). (1) JPanel помещается в JScrollPane с помощью JScrollPaneLayout. Я хочу (n) JPanels перетащить, чтобы переключить позиции (n) JPanels, но все равно поддерживать BoxLayout. Например, у меня есть JPanel с BoxLayout и 4 JPanels, я хочу вставить четвертый JPanel между 1-м и 2-м, перетащив его между ними, начальная вторая JPanel будет автоматически перенесена на 3-е место.Java draggable JPanel внутри JScrollPane с boxLayout
я уже сделал (п) JPanels перетаскиваемым, но я не могу найти способ, чтобы получить положение, в котором они должны быть вставлены:
private void handleDrag(final JPanel panel){
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
panelX = me.getX();
panelY = me.getY();
}
@Override
public void mouseReleased(MouseEvent me2){
// get position of Component
boxPanel.add(panel, position);
scroll.revalidate();
}
});
panel.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent me) {
me.translatePoint(me.getComponent().getLocation().x - panelX, me.getComponent().getLocation().y - panelY);
panel.setLocation(0, me.getY());
}
});
Я хочу, чтобы изменить положение компоненты в JPanel, используя BoxLayout, перетащив JPanel в позицию, но я хочу, чтобы JPanel поддерживал BoxLayout.