-1

我创建了一个框架和两个面板。

Jpanel pane11=new JPanel();
Jpanel pane12=new JPanel();

添加panel2panel1

panel1.add(panel2);
getContentPane().add(panel1);

现在我将panel2背景设置为白色并且它工作正常

我在其中创建了 4 个JTextPanespanel2使其可拖动。

*现在我的问题是:如果我将文本窗格从 (0,0) 拖到 (10,10) 并保存它,当我关闭并重新打开框架时,文本窗格必须重新出现在 (10,10)。那么如何在flowlayout中获取jtextpanes的位置*

我创建了保存按钮来保存面板中的更改,并且我正在为panel2.

我正在使用 XML 文件来保存位置。

4

3 回答 3

2

根据设计,在调整FlowLayout外壳大小时将面板恢复到其计算位置Window。作为替代方案,请考虑JInternalFrame,它支持直接拖入 a JDesktopPane。使用Preferences API来保存每个内部框架的位置。

于 2013-06-24T08:40:12.303 回答
0

试试这个,保存 finalx 和 finaly 变量。

@Override
public void mousePressed(MouseEvent e) {
    if (panel.contains(e.getPoint())) {
        dX = e.getLocationOnScreen().x - panel.getX();
        dY = e.getLocationOnScreen().y - panel.getY();
        panel.setDraggable(true);
    }
}

@Override
public void mouseDragged(MouseEvent e) {
    if (panel.isDraggable()) {
        finalx=e.getLocationOnScreen().x - dX;//save finalx and finaly
        finaly=e.getLocationOnScreen().y - dY;
        dX = e.getLocationOnScreen().x - panel.getX();
        dY = e.getLocationOnScreen().y - panel.getY();
    }
}
于 2013-06-24T05:05:25.277 回答
-1

使用流程布局时无法保存位置。

如果您想自定义整个布局,可以使用

container.setLayout(null)

并明确地给每个组件的位置和大小

setLocation(x,y)
setSize(w,h)
于 2013-06-24T05:04:39.673 回答