JFrame сделан не в нужных размерах - PullRequest
2 голосов
/ 14 января 2010

Этот код при запуске создаст окно, но не с указанными размерами. Что с ним не так?

import javax.swing.*;
import java.awt.*;

public class Windowing {
    void JFrame(){
        JFrame frames = new JFrame("Total recall");
        frames.setSize(1000,8000);
        frames.setVisible(true);
        frames.pack();
        //Buttons push = new Buttons();
        //((Buttons) push).buttons();
        JTextField wager = new JTextField(1);
        wager.setSize(100,200);
        wager.setVisible(true);
        wager.setLocation(100, 200);
        frames.add(wager);
        //frames.add(push);
    }
}

Ответы [ 3 ]

5 голосов
/ 14 января 2010

Вы можете удалить звонок на frames.pack(); он переопределяет ранее установленный размер кадра.

Однако то, что вы действительно хотите сделать, это удалить frames.setSize(1000,8000) и переместить frames.pack() вниз к основанию метода; это гарантирует, что рамка будет достаточно большой для отображения ее содержимого, но не слишком большой для размещения на экране.

Если вы позвоните pack перед добавлением чего-либо в кадр (как вы делаете сейчас), это сделает окно очень маленьким; Вероятно, он появляется в левом верхнем углу экрана, но вы не заметите его, если не знаете, где искать.

3 голосов
/ 14 января 2010

Похоже, у вас есть несколько "областей возможностей".

  • Для начала, похоже, что вы установили размер кадра 1000x8000, потому что не увидели никаких изменений, верно?

  • Во-вторых, вы вызываете setVisible в textField, потому что вы тоже этого не видели.

  • И, наконец, вы устанавливаете размер текстового поля (я думаю, потому что вы видите, что он занимает весь кадр)

Проблема здесь в том, что вы должны вызывать pack и setVisible в конце конструкции. Кроме того, вы должны научиться использовать менеджеры по расположению и кадрам.

Качели, очень мощные, но в начале их немного сложно понять.

Эти две ссылки будут полезны:

Я изменил ваш код, и результат выглядит так:

alt text

Вот модифицированный исходный код.

import javax.swing.*;
import java.awt.*;

public class Windowing {
    public static void main( String [] args ) {
        Windowing windowing = new Windowing();
        windowing.showFrame();
    }
    void showFrame(){
        JFrame frame = new JFrame("Total recall");
        JButton push = new JButton("Push");
        JTextField wager = new JTextField(15);

        // Panels do have "FlowLayout"
        JPanel panel = new JPanel();
        panel.add(wager);
        panel.add(push);

        frame.add( panel );
        frame.pack();
        frame.setVisible(true);

    }
}
1 голос
/ 14 января 2010

Попробуйте использовать setPreferredSize(Dimension) вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...