我正在尝试重用Swing SpringLayout紧凑网格功能,以使用以下方法制作可调整大小的JButton的紧凑网格: http://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html
它工作正常,但SpringLayout无法调整JButton,因此对我来说没用。 是否有其他方法可以创建一个可调整大小的Jbuttons的紧凑网格?
答案 0 :(得分:2)
A: Use GridLayout, use GridBagLayout, write your own LayoutManager.
Q: How can I write my own LayoutManager?
请不要,对于Swing Guru来说,像@StanislavL编写自己的LayoutManager
并不复杂,因为我们其他人最好使用MigLayout或GridBagLayout
,
答案 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();
}
}