开发者

How to I change the size of an element in a BoxLayout?

I have this class:

package com.erikbalen.game.rpg;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Gui extends JFrame implements ActionListener {

/**
 * 
 */
private static final long serialVersionUID = -384241835772507459L;
JLabel playerInfo开发者_开发知识库;
JTextField textField;
private final static String newline = "\n";
JTextArea feed;
JScrollPane scrollPane;
Player player;

public Gui() {
    super("Erik's RPG");

    //setLayout(new FlowLayout());

    Container contentPane = this.getContentPane();
    contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));

    textField = new JTextField(30);

    textField.addActionListener(this);


    feed = new JTextArea(15, 30);
    feed.setEditable(false);
    scrollPane = new JScrollPane(feed);
}

When you run it what it does it it makes the textField really tall if I expand it even though I only want it to be a certain height. How can I


BoxLayout expands components until their max size, JTextField misbehaves in returning a max height of Short.Max (or Integer.Max, forgot). The way out is to make the field behave:

    @Override
    public Dimension getMaximumSize() {
        // TODO Auto-generated method stub
        Dimension dim = super.getMaximumSize();
        dim.height = getPreferredSize().height;
        return dim;
    }

Alternatively, use another LayoutManager :-)


A layout manager will reset the size of your component based on various constraints. You can use the setPreferredSize() method instead of setSize() to tell most layout managers what size the field should be.

for e.g.

textField.setPreferredSize(new Dimension(width,height));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜