2016-06-19 4 views
0

Когда я использую frame.pack();, то я вижу очень маленькое окно:ява - Изменение размера упакована JFrame

enter image description here

Изменение размера после того, как пакет сделает кадр некрасиво.

Как я могу получить большой и упакованный фрейм?

Код:

public class Main { 

//first tab 
static JTextArea nameArea = new JTextArea("Nickname:"); 
static JTextArea ageArea = new JTextArea("Age:"); 
static JTextArea heightArea = new JTextArea("Height:"); 
static JTextArea weightArea = new JTextArea("Weight:"); 

static JTextField nameField = new JTextField(); 
static JTextField ageField = new JTextField(); 
static JTextField heightField = new JTextField(); 
static JTextField weightField = new JTextField(); 

public static void main(String[] args) { 
    JFrame frame = new JFrame("Character Builder"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setPreferredSize(new Dimension(512, 384)); 
    frame.setVisible(true); 

    JTabbedPane pane = new JTabbedPane(); 
    frame.add(pane); 

    JPanel panel1 = new JPanel(); 
    GridLayout layout = new GridLayout(4, 2); 
    layout.minimumLayoutSize(panel1); 
    panel1.setLayout(layout); 
    pane.addTab("Profile", panel1); 

    JButton button = new JButton("test"); 
    panel1.add(nameArea); 
    panel1.add(nameField); 
    panel1.add(ageArea); 
    panel1.add(ageField); 
    panel1.add(heightArea); 
    panel1.add(heightField); 
    panel1.add(weightArea); 
    panel1.add(weightField); 

    frame.pack(); 
} 

}

+0

Какой макет вы используете? – GreenThor

+0

@GreenThor GridLayout –

ответ

0

Изменить предпочтительный размер компонентов.

http://docs.oracle.com/javase/8/docs/api/java/awt/Window.html#pack--

EDIT: Хорошо, pack() идет только "из Farest" компонента, на вкладке панели. С другой стороны, GridLayout ориентируется на минимальную ширину и высоту, в данном случае, очевидно, ширину Nickname: и высоту текстовых полей, которые вы также можете изменить. (EDIT2: Попробовав его, я обнаружил, что до сих пор используется preferredSized, по какой-либо причине) Смотрите также:

http://docs.oracle.com/javase/8/docs/api/java/awt/GridLayout.html#minimumLayoutSize-java.awt.Container-

Существует также возможность изменять зазоры между компонентами, если вы хотите, ,

EDIT2: Это все, что я могу вам предложить.

JPanel panel1 = new JPanel(); 
    GridLayout layout = new GridLayout(4, 2); 
// layout.minimumLayoutSize(panel1); 
    layout.setHgap(1); 
    layout.setVgap(10); 
    panel1.setLayout(layout); 
    pane.addTab("Profile", panel1); 

    Dimension dmtfs = nameField.getPreferredSize(); // default preferred text field size 
    nameField.setPreferredSize(new Dimension(dmtfs.width, dmtfs.height-10)); // too small, but will be caught by height of text area 
    ageField.setPreferredSize(new Dimension(dmtfs.width, dmtfs.height-10)); 
    heightField.setPreferredSize(new Dimension(dmtfs.width, dmtfs.height-10)); 
    weightField.setPreferredSize(new Dimension(dmtfs.width, dmtfs.height-10)); 
    Dimension dmtas = nameArea.getPreferredSize(); // default preferred text area size 
    nameArea.setPreferredSize(new Dimension(dmtas.width+10, dmtas.height)); 
    // changing one is enough, because GridLayout goes for the biggest 

Макет сетки будет пытаться сделать каждый компонент такого же размера и в случае JTextField, что означает заполнение всех имеющихся пространства.

+0

Ничего не изменилось: '( Уродливые большие текстовые поля –

+0

@ V.Govorov Лучше сейчас? – GreenThor

+0

Я не могу понять, как это может мне помочь. Это ничего не меняет. Если я просто упакую, это очень смахивает <когда Я установил размер/PreferedSize TextFields, масштабирующийся уродливо. –

Смежные вопросы