Постоянные положения окон оболочки SWT - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть код, подобный тому, что делает пример ниже, который позволяет мне открыть оболочку в другом месте.Что мне нужно сделать, это отследить положение окна, если оно было перемещено, и сохранить эти позиции для следующего открытия этого окна.Есть предложения?

 public StartupSplashShell(Display display)
 {
     shell = new Shell(display, SWT.NO_TRIM);
     setupShell();  // place components in the main avoCADo shell
     shell.setText("avoCADo");
     shell.setBackgroundImage(ImageUtils.getIcon("./avoCADo-Splash.jpg", 
     360, 298));
     shell.setSize(360, 298);   //TODO: set intial size to last known size
     Rectangle b = display.getBounds();
     int xPos = Math.max(0, (b.width-360)/2);
     int yPos = Math.max(0, (b.height-298)/2);
     shell.setLocation(xPos, yPos);
     shell.setImage(ImageUtils.getIcon("./avoCADo.png", 32, 32));
     shell.open();
}

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Предполагая, что это простое приложение SWT, вы можете использовать слушатель SWT.Move, который будет сообщаться при каждом перемещении оболочки:

shell.addListener(SWT.Move, event ->
  { 
    Point location = shell.getLocation();
    ....
  });

Или вы можете использовать слушатель SWT.Close, чтобы просто прослушиватьзакрытие оболочки:

shell.addListener(SWT.Close, event ->
  { 
    Point location = shell.getLocation();
    ....
  });

Если вы хотите сохранить местоположение между запусками приложения, вам нужно будет сохранить это местоположение в файле типа Properties.

0 голосов
/ 15 февраля 2019

Вставьте IEclipsePreferences в обработчик приложения выхода и сохраните границы в настройках Eclipse, если вы работаете над Eclipse Plugin.

@Inject
@Preference
private IEclipsePreferences preferences;

Если ваше приложение является автономным SWT-приложением, вы можете использовать файл (например, или базы данных для сохранения границ оболочки

mainShell.getBounds() // serialize it in String
preferences.put("SHELL_BOUNDS", boundStr);

Снова введите предпочтения при запуске приложения и получите границы из предпочтений

bounds = preferences.get("SHELL_BOUNDS", "");

Затем вы можете установить местоположение иразмер раковины

mainShell.setLocation(xAxis, yAxis);
mainShell.setSize(width, height);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...