2013-06-24 2 views
-1

Я создал рамку и две панели.Сохранить расположение в раскладке

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

Добавлена ​​panel2 в panel1

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

Теперь я установил panel2 фон белый и правильно работает

я создал 4 JTextPanes в panel2 и сделал это перетаскиваемым.

Теперь моя проблема: если я перетаскиваю текстовую панель от (0,0) до (10,10), и я сохраняю ее, то текстовая панель должна появляться на (10,10), когда я закрываю и повторно откройте кадр. Так как получить расположение jtextpanes в FlowLayout *

я создал кнопку Сохранить, чтобы сохранить изменения в панели и я использую макет потока для panel2.

Я использую файл XML для сохранения местоположений.

+1

1) Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/) то, что у вас есть до сих пор. 2) Вы описали проблему, но до сих пор не задавали вопрос (не говоря уже о конкретном, ответственном вопросе). Какой у Вас вопрос? –

+1

См. [Этот ответ] (http://stackoverflow.com/a/7778332/418556) для сохранения свойств 'JFrame'. –

ответ

2

Конструктивно FlowLayout восстановит панель расчетного местоположения, когда ограждающих Window изменяется. В качестве альтернативы рассмотрим JInternalFrame, который поддерживает перетаскивание непосредственно в JDesktopPane. Используйте кнопку Preferences API для сохранения положения каждого внутреннего фрейма.

+0

Спасибо за помощь –

+0

будет областью JInternal автоматически изменять размер Jtextarea. –

+0

Я видел в макете потока, что он автоматически изменит размер текстовой области. Будет ли возможно с JInternalFrame –

-1

Вы не можете сохранить местоположение при использовании компоновки потока.

Если вы хотите, чтобы настроить весь макет, вы можете использовать

container.setLayout(null) 

и каждому компоненту расположение и размер явно

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

Не предлагайте «нулевые» макеты до тех пор, пока *** все *** не будут изучены другие возможности. В этом случае возможны и другие возможности: OP фактически хочет сохранить * индекс * элементов в FlowLayout', макет может быть лучше всего настроен на пользовательский 'DragAndDropLayout', элементы лучше отображаются в' JList '.. Существует явная нехватка информации, необходимой для того, чтобы направлять ОП на лучший ответ, поэтому я чувствую * любой * ответ на этом этапе в значительной степени умозрительный. –

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

перетаскиваемый не работает, он не показывает использование isDraggable() в jpanel –