2010-08-10 69 views
2
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的前面,它会这样做。 这是为什么?关于Java 1.4.2中的SpringLayout的问题

+0

看看http://stackoverflow.com/questions/3384000是相关的。 – trashgod 2010-08-10 03:31:48

+0

是的,我不相信它是1.6之前的bug。谢谢 – user415726 2010-08-10 03:38:28

回答

2

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