4

私はこのクラスを持っています:

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

あなたがそれを実行すると、特定の高さだけにしたいのに、それを展開すると textField が本当に高くなります。どうやって

4

2 に答える 2

7

BoxLayout は、最大サイズまでコンポーネントを展開します。JTextField は、Short.Max (または Integer.Max、忘れました) の最大高さを返す際に誤動作します。解決策は、フィールドを動作させることです:

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

または、別の LayoutManager を使用してください:-)

于 2011-09-16T06:51:51.273 に答える
3

レイアウト マネージャーは、さまざまな制約に基づいてコンポーネントのサイズをリセットします。setSize() の代わりに setPreferredSize() メソッドを使用して、ほとんどのレイアウト マネージャーにフィールドのサイズを指定できます。

例えば

textField.setPreferredSize(new Dimension(width,height));
于 2011-09-16T05:49:57.947 に答える