关于java 1.4.2中SpringLayout的问题

时间:2010-08-10 03:14:48

标签: java swing

public static void main(String[] args) {
    // TODO code application logic here
        JFrame frame = new JFrame();

        SpringLayout layout = new SpringLayout();
        frame.getContentPane().setLayout(layout);
        TitledBorder border = null;
        border = BorderFactory.createTitledBorder("Group1");
        frame.setSize(620, 620);

        JPanel mainPanel = new JPanel();
        mainPanel.setBorder(border);
        //mainPanel.setPreferredSize( new Dimension(600,600));
        layout.putConstraint(SpringLayout.EAST, mainPanel, -15, SpringLayout.EAST, frame.getContentPane());
        layout.putConstraint(SpringLayout.WEST, mainPanel, 15, SpringLayout.WEST, frame.getContentPane());
        layout.putConstraint(SpringLayout.SOUTH, mainPanel, -15, SpringLayout.SOUTH, frame.getContentPane());
        layout.putConstraint(SpringLayout.NORTH, mainPanel, 15, SpringLayout.NORTH, frame.getContentPane());

        frame.getContentPane().add(mainPanel);
        frame.setVisible(true);
}

我正在使用面板自动调整大小及其父级,同时其父级在java 1.4.2中调整大小。 我使用SpringLayout来做到这一点,但我发现如果我在WEST和NORTH之后定义SpringLayout.East和SpringLayout.South,面板(mainPanel)将不会在(15,15)处定位。如果EAST和NORTH定义在WEST和SOUTH之前,它将会这样做。 那是为什么?

1 个答案:

答案 0 :(得分:2)

如本相关question所述,约束规范的顺序可能很重要,特别是如果生成的布局为over-constrained。订单WEST, NORTH, EAST, SOUTH是导致重置的示例,在相关bug report的“解决方法评估”部分中提到。