在流布局中保存位置

时间:2013-06-24 04:54:14

标签: java swing jframe persistence jtextpane

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

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

panel2添加到panel1

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

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

我在JTextPanes中创建了4 panel2并使其可以拖动。

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

中获取jtextpanes的位置

我创建了保存按钮以保存面板中的更改,我正在使用panel2的流布局。

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

3 个答案:

答案 0 :(得分:2)

按照设计,FlowLayout会在调整封闭Window大小时将面板恢复到其计算位置。作为替代方案,请考虑JInternalFrame,它支持直接拖动JDesktopPane。使用Preferences API保留每个内部框架的位置。

答案 1 :(得分:0)

试试这个, 保存决赛和最终变数。

@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();
    }
}

答案 2 :(得分:-1)

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

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

container.setLayout(null)

并明确地为每个组件提供位置和大小

setLocation(x,y)
setSize(w,h)