【发布时间】:2010-08-01 22:31:51
【问题描述】:
我正在使用 SpringLayout 使用以下代码制作 GUI:
private void createAndShowGUI() {
frame = new JFrame("A GUI");
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.setResizable(false);
Container contentPane = frame.getContentPane();
SpringLayout layout = new SpringLayout();
contentPane.setLayout(layout);
contentPane.add(this);
layout.putConstraint(SpringLayout.WEST, this, 300, SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.NORTH, this, 0, SpringLayout.NORTH, contentPane);
JLabel startLabel = new JLabel("Start Node:");
contentPane.add(startLabel);
layout.putConstraint(SpringLayout.WEST, startLabel, 5, SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.NORTH, startLabel, 5, SpringLayout.NORTH, contentPane);
startNodes = new JComboBox();
contentPane.add(startNodes);
layout.putConstraint(SpringLayout.WEST, startNodes, 15, SpringLayout.WEST, contentPane); // THIS LINE
layout.putConstraint(SpringLayout.EAST, startNodes, -10, SpringLayout.WEST, this); // AND THIS ONE
layout.putConstraint(SpringLayout.NORTH, startNodes, 5, SpringLayout.SOUTH, startLabel);
layout.putConstraint(SpringLayout.EAST, contentPane, 0, SpringLayout.EAST, this);
layout.putConstraint(SpringLayout.SOUTH, contentPane, 0, SpringLayout.SOUTH, this);
frame.pack();
frame.setVisible(true);
}`
当我(在 NetBSD 上)运行它时,两条注释行似乎相互冲突。 当我只有第一个时,它会按预期向左对齐,但是当我添加第二个时,它会向右对齐,而不是像我预期的那样向右拉伸。
奇怪的是它在 Windows 7 Pro 32bit 上运行得很好。
谁能告诉我我做错了什么?
【问题讨论】:
-
您在平台上使用什么版本的 JRE/JDK?不同版本的行为可能有所不同(尽管这通常是一个错误)。
-
啊,好点子。在 NetBSD 系统上,它似乎是 1.5,而在 Windows 7 系统上,我认为它是最新版本,1.6 或类似的东西。有一个不同的版本真的会导致这个吗?文档说 SpringLayout 从 1.4 开始就已经存在了。