【问题标题】:SpringLayout works on Windows 7 but not NetBSD?SpringLayout 适用于 Windows 7 但不适用于 NetBSD?
【发布时间】: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 开始就已经存在了。

标签: java swing layout


【解决方案1】:

事实证明,在 Java 1.5 中,您始终必须在 WEST/NORTH 约束之前指定 EAST/SOUTH 约束。否则,它不会正确定位组件。 此错误已在 1.6 中修复,这就是我在 Windows 机器上没有注意到它的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多