2012-02-24 4 views
0

У меня есть JPanel внутри JFrame (но они не того же размера, и JFrame - полный экран). JPanel имеет FlowLayout, потому что я динамически добавляю туда небольшие квадраты (JPanels). Эти квадраты хорошо организованы (они перемещаются в следующий ряд, когда заканчивается JPanel), пока я не изменил размер JFrame - тогда эти квадраты показаны в одной строке, что делает их частью невидимыми (они исчезают по окончании экрана) и JPanel изменение размера. Что я могу сделать, чтобы сохранить постоянный размер JPanel? LayoutManager JFrame - это MigLayout.JPanel с FlowLayout изменяет размеры

ответ

2

Одно из возможных решений: переопределить метод getPreferredSize(), чтобы вернуть постоянное измерение.

public class MyPanel extends JPanel { 
    private static final int PANEL_W = 400; 
    private static final int PANEL_H = 300; 

    public MyPanel() { 
     // ... etc... 
    } 


    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(PANEL_W, PANEL_H); 
    } 

    // ... etc... 
} 
+0

Проблема заключается в том, что я не могу определить ширину и высоту от продвижения, потому что я увеличил JPanel, чтобы разместить все возможное место для установки экрана (так что размер зависит от размера экрана). Чтобы быть более конкретным, мой JFrame делится на два столбца (согласно MigLayout): сначала имеет постоянный размер, а второй занимает все свободное место. – user1091733

+0

Кроме того, этот код не работает. Даже если я определяю размер JPanel, он изменяется, когда я изменяю размер окна или вызываю функцию validate() на JFrame. – user1091733