java - 如何更改 BoxLayout 中元素的大小?

标签 java swing user-interface boxlayout

我有这门课:

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 变得非常高,即使我只希望它达到一定高度。我怎么能

最佳答案

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 :-)

关于java - 如何更改 BoxLayout 中元素的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440631/

相关文章:

java - Java中具有可变长度零宽度lookbehind的正则表达式

java - 以编程方式为 WebSphere 5.x 请求发送方绑定(bind) BasicAuth Web 服务客户端设置凭证

java - 使用按钮关闭窗口

Java GUI 布局问题

java - GUI 停止工作,即使它在自己的线程中并且未调用 Thread.sleep()

java - 将 UUID 转换回字符串输入 - nameUUIDFromBytes

java - 如何在eclipse中使用java运行嵌入式pig程序?

java - 在 JList 中使用自定义 JPanel 组件

Java JFrame 鼠标监听器

python - 单击按钮时打开一个新窗口 || PyQt5