初学JAVA,在做一个布局管理器的练习,我在Box里面放了一个JPanel,想让JPanel的高度一定,而宽度随着窗口大小的变化而变化,于是我为这个JPanel加了MinimumSize和MaximumSize,但是奇怪的是,MaximumSize的宽度只显示了一半,不知为何,忘高手指教测试代码如下:
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
private static final long serialVersionUID=20110118L;
public Test() {
Container container=this.getContentPane();
this.setSize(300, 200);
Box box=Box.createVerticalBox();
box.setOpaque(true);
box.setBackground(Color.WHITE);
container.add(box);
JPanel panel=new JPanel(new GridBagLayout());
panel.setBackground(Color.GRAY);
panel.setMinimumSize(new Dimension(0,50));
panel.setMaximumSize(new Dimension(1000,50)); //我最大化窗口后这个JPanel的宽度只有500,这是为什么
box.add(panel);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Test();
}}
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
private static final long serialVersionUID=20110118L;
public Test() {
Container container=this.getContentPane();
this.setSize(300, 200);
Box box=Box.createVerticalBox();
box.setOpaque(true);
box.setBackground(Color.WHITE);
container.add(box);
JPanel panel=new JPanel(new GridBagLayout());
panel.setBackground(Color.GRAY);
panel.setMinimumSize(new Dimension(0,50));
panel.setMaximumSize(new Dimension(1000,50)); //我最大化窗口后这个JPanel的宽度只有500,这是为什么
box.add(panel);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Test();
}}
改成
Box box = new Box(BoxLayout.LINE_AXIS);
就能达到1000
不过panel的位置由顶部到了中间。
Box box = new Box(BoxLayout.X_AXIS);也可以
只是panel 也就到中间显示了、、
所以宽度能达到1000也不奇怪,就像在VerticalBox里面高度能达到50一样,MaximumSize的宽度和高度反过来,高度一样只能达到500代码如下:
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
private static final long serialVersionUID=20110118L;
public Test() {
Container container=this.getContentPane();
this.setSize(300, 200);
Box box=new Box(BoxLayout.LINE_AXIS); //即使改成这样,结果其实是一样的,只是一个是横向BOX,而另一个是纵向BOX而已
box.setOpaque(true);
box.setBackground(Color.WHITE);
container.add(box);
JPanel panel=new JPanel(new GridBagLayout());
panel.setBackground(Color.GRAY);
panel.setMinimumSize(new Dimension(50,0));
panel.setMaximumSize(new Dimension(50,1000)); //这里高度只能达到500了,BOX真是太奇怪了
box.add(panel);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Test();
}}