【发布时间】:2015-05-06 02:25:36
【问题描述】:
我有 (1)JPanel,其中包含 (2)JPanel 和 BoxLayout。 (2)JPanel 可以包含任意数量的 (n) 个带有 FlowLayout 的JPanel(没有订单)。 (1)使用JScrollPaneLayout将JPanel放入JScrollPane。我希望 (n)JPanels 可拖动以切换 (n)JPanels 的位置,但仍保持 BoxLayout。例如,我有带有 BoxLayout 和 4 个 JPanel 的 JPanel,我想通过在第 1 个和第 2 个之间拖动它来插入第 4 个 JPanel,初始的第 2 个 JPanel 将自动移动到第 3 个位置。
我已经使 (n)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。
【问题讨论】:
标签: java draggable jscrollpane boxlayout