Изменение размера JTextField при минимизации - PullRequest
3 голосов
/ 18 января 2012

У меня есть JTextField, а также JTextArea в JFrame. Однако когда приложение запускается, размер JTextField изменяется, если я сверну окно. Как правило, он удваивается или утраивается по высоте, но он не соответствует тому, как он каждый раз изменяет размеры. Я понятия не имею, почему это может происходить. Я на самом деле не прошу прямого решения, просто некоторые возможные вещи, которые могут быть причиной проблемы. Если бы вы могли помочь мне здесь, это было бы здорово. Спасибо

РЕДАКТИРОВАТЬ: вот код, который я использую для его инициализации:

public class Console extends JPanel implements ActionListener, Serializable {
    boolean ready = false;
    protected JTextField textField;
    protected JTextArea textArea;
    private final static String newline = "\n";
    Game m_game;
    Thread t;

public Console(Game game) {
    super(new GridBagLayout());

    m_game = game;
    textField = new JTextField(20);
    textField.setPreferredSize(null);
    textField.addActionListener(this);

    textArea = new JTextArea(20, 60);
    textArea.setEditable(false);
    textArea.setWrapStyleWord(true);
    textArea.setLineWrap(true);
    Font comic = new Font("Serif", Font.PLAIN, 14);
    textArea.setFont(comic);
    JScrollPane scrollPane = new JScrollPane(textArea);

    //Add Components to this panel.
    GridBagConstraints c = new GridBagConstraints();
    c.gridwidth = GridBagConstraints.REMAINDER;

    c.fill = GridBagConstraints.HORIZONTAL;
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1.0;
    c.weighty = 1.0;
    add(scrollPane, c);
    add(textField, c);
}

public void actionPerformed(ActionEvent evt) {
    String text = textField.getText();
    m_game.input = text;
    textField.selectAll();
    textArea.setCaretPosition(textArea.getDocument().getLength());
    m_game.wait = false;
    synchronized (m_game){
        ready = true;
        m_game.notifyAll();
    }
}

public void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("Game");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Add contents to the window.
    frame.add(new Console(m_game));

    //Display the window.
    frame.pack();
    frame.setVisible(true);
}

1 Ответ

9 голосов
/ 18 января 2012

Я думаю, что это связано с Layout Manager.http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html

...