如何使用可调整大小的JButton制作紧凑的网格?

时间:2012-03-19 13:32:49

标签: java swing layout

我正在尝试重用Swing SpringLayout紧凑网格功能,以使用以下方法制作可调整大小的JButton的紧凑网格: http://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html

它工作正常,但SpringLayout无法调整JButton,因此对我来说没用。 是否有其他方法可以创建一个可调整大小的Jbuttons的紧凑网格?

2 个答案:

答案 0 :(得分:2)

A: Use GridLayout, use GridBagLayout, write your own LayoutManager.
Q: How can I write my own LayoutManager?

请不要,对于Swing Guru来说,像@StanislavL编写自己的LayoutManager并不复杂,因为我们其他人最好使用MigLayoutGridBagLayout

答案 1 :(得分:1)

您可以使用GridBagLayout。下面是一个显示两个按钮的示例 - 一个保持其宽度,另一个按钮在调整帧大小时更改其宽度。

注意GridBagConstraints告诉组件它在布局中应该如何表现。权重控制调整大小行为。有关详细信息,请参阅Java Tutorials

package test;

import java.awt.Button;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;

public class LayoutResizeButtonTest extends JFrame {

    public static void main(String[] args) {

        LayoutResizeButtonTest app = new LayoutResizeButtonTest();

        app.setDefaultCloseOperation(EXIT_ON_CLOSE);
        app.setVisible(true);

    }

    LayoutResizeButtonTest() {

        this.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;

        this.add(new Button("Resizable"), c);

        c = new GridBagConstraints();
        c.weightx = 0.0;

        this.add(new Button("Not Resizable"));

        this.pack();

    }

}