boxlayout java_java – 如何使用BoxLayout在容器内设置组件大小

首先,您必须意识到Java Swing中的组件位置和大小取决于布局管理器(如果设置了布局管理器),而不是组件本身.该组件向经理请求大小.

对于这种情况,我会使用不同的布局 – GridLayout和BorderLayout的组合足够且非常简单和直接.但如果想使用BoxLayout,那么……

>文档说:

BoxLayout pays attention

to a component’s requested minimum, preferred, and maximum sizes.

While you are fine-tuning the layout, you might need to adjust these

sizes. … For example, a button’s maximum size is generally the

same as its preferred size. If you want the button to be drawn wider

when additional space is available, then you need to change its

maximum size.

>然后设置组件最大大小:c.setMaximumSize(new Dimension(Integer.MAX_VALUE,c.getMinimumSize().height)); (c表示示例中的按钮,标签和textField)

编辑1:

这是工作源代码:

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import javax.swing.BoxLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

import javax.swing.WindowConstants;

public class Testy extends JPanel {

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

constructGUI();

}

});

}

private static void constructGUI() {

JFrame frame = new JFrame("Testy");

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

JPanel centerPanel = new JPanel();

centerPanel.setBackground(Color.DARK_GRAY);

centerPanel.setPreferredSize(new Dimension(100, 400));

frame.add(centerPanel, BorderLayout.CENTER);

Testy eastPanel = new Testy();

frame.add(eastPanel, BorderLayout.EAST);

frame.pack();

frame.setVisible(true);

}

public Testy() {

setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

JButton button = new JButton("Button ...... 1");

//button.setPreferredSize(...);

button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMinimumSize().height));

add(button);

button = new JButton("Button 2");

//button.setPreferredSize(...);

button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMinimumSize().height));

add(button);

button = new JButton("Button ........... 3");

//button.setPreferredSize(...);

button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMinimumSize().height));

add(button);

JLabel label = new JLabel("Label");

//label.setPreferredSize(...);

label.setMaximumSize(new Dimension(Integer.MAX_VALUE, label.getMinimumSize().height));

add(label);

JTextField textField = new JTextField();

//textField.setPreferredSize(...);

textField.setMaximumSize(new Dimension(Integer.MAX_VALUE, textField.getMinimumSize().height));

add(textField);

button = new JButton("Button 4");

//button.setPreferredSize(...);

button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMinimumSize().height));

add(button);

// add(Box.createVerticalGlue());

}

}

编辑2:

如果你想在右栏的底部布置按钮4,请添加此行add(Box.createVerticalGlue()); add(textField)之间;和button = new JButton(“Button 4”);.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值