Можно ли увеличить/уменьшить ширину/высоту фрейма слева направо/снизу вверх?

Вскоре я не смог этого сделать, однако я пробовал несколько способов, но кадр все еще увеличивается от начальной точки и возвращается к ней.
Это происходит с высотой, так как это только перемещение вверх вниз, а не вниз вверх.
Здесь я добавляю код, уменьшающий ширину:

for(int i = getWidth();i>0;i-=8){
    setSize(i,getHeight());
     try{
    Thread.sleep(sleep);
    }catch(Exception ex){}
}

Есть ли способ, чтобы рама могла иметь среднюю точку, а обе стороны шли к ней?


person Azad    schedule 28.05.2013    source источник
comment
Это полностью зависит от используемых менеджеров компоновки.   -  person Eng.Fouad    schedule 28.05.2013
comment
Так что это возможно, но у какого менеджера компоновки есть такая возможность?   -  person Azad    schedule 28.05.2013
comment
Thread.sleep в EDT - не очень хорошая идея... см. Параллелизм в Swing учебник для получения дополнительной информации (резюме: вместо этого используйте javax.swing.Timer)   -  person Robin    schedule 28.05.2013
comment
@Робин, спасибо за хороший совет.   -  person Azad    schedule 28.05.2013


Ответы (1)


Каждый раз, когда вы увеличиваете рамку, упаковывайте и повторно центрируйте ее на дисплее:

pack();
setLocationRelativeTo(null);
person trashgod    schedule 28.05.2013
comment
Спасибо, это работает, нужен ли метод pack() каждый раз или нужен только setLocationRelativeTo, я пробовал pack(), он не будет показывать увеличение. - person Azad; 28.05.2013
comment
Хороший вопрос: pack() требуется для компоновки любых компонентов в кадре. Вот несколько примеров использования таймера вместо sleep(). - person trashgod; 28.05.2013