简体   繁体   English

JTextField在最小化时调整大小

[英]JTextField resizing upon minimize

I have a JTextField as well as a JTextArea in a JFrame. 我在JFrame中有一个JTextField和一个JTextArea。 When the application runs however, the JTextField gets resized if I minimize the window. 但是,当应用程序运行时,如果我最小化窗口,则会调整JTextField的大小。 It usually doubles or triples in height, but it's not consistent in how it resizes each time. 它的高度通常是双倍或三倍,但每次调整大小的方式并不一致。 I have no idea why this could be happening. 我不知道为什么会发生这种情况。 I'm not really asking for a direct solution, just some possible things that could be causing the problem. 我并不是真的要求直接解决方案,只是可能导致问题的一些可能的事情。 If you could help me out here that'd be great. 如果你能帮助我,那就太好了。 Thanks 谢谢

EDIT: here's the code I'm using to initialize it: 编辑:这是我用来初始化它的代码:

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);
}

I think it's connected with Layout Manager. 我认为它与布局管理器有关。 http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM