Используйте SERVER \\ INSTANCE NAME. Использование двойной обратной косой черты в моем проекте решило мою проблему.
Вы правы, что вам неудобно с этим кодом. Кажется, что каждый из вызванных методов знает, какая следующая строка должна быть обработана, поэтому они тесно связаны, и логика для принятия решения о следующей строке распределена по нескольким методам. Yeuch! Если следующий ряд действительно должен быть на 1 больше предыдущего, то, вероятно, лучше централизовать эту логику в методе createControlPanel
:
private void createControlPanel() {
int initialRow = 0;
initSessionControls(controlPanelGB, initialRow);
initBidControls(controlPanelGB, initialRow+1);
initSnapshotControls(controlPanelGB, initialRow+2);
}
Это яснее, чем ваше второе решение выше, так как ясно что второй аргумент является строкой, и как он связан с начальным значением строки.
Я предлагаю использовать класс ControlPanelFiller
:
class ControlPanelFiller {
private final ... controlPanel;
private int row = 0;
public ControlPanelFiller(... controlPanel) {
this.controlPanel = controlPanel;
}
public ControlPanelFiller initSessionControls() {
...
++row;
return this;
}
public ControlPanelFiller initBidControls() {
...
++row;
return this;
}
public ControlPanelFiller initSnapshotControls() {
...
++row;
return this;
}
}
private void createControlPanel()
{
ControlPanelFiller cpf = new ControlPannelFiller(controlPanelGB);
cpf.initSessionControls()
.initBidControls()
.initSnapshotControls();
}