SpringLayout работает на Windows 7, но не на NetBSD? - PullRequest
2 голосов
/ 02 августа 2010

Я делаю GUI, используя SpringLayout, используя следующий код:

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.

Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

3 голосов
/ 02 августа 2010

Оказывается, что в Java 1.5 всегда нужно указывать ограничения EAST / SOUTH перед ограничениями WEST / NORTH. В противном случае он не размещает компоненты должным образом. Эта ошибка исправлена ​​в 1.6, поэтому я не заметил ее на моей машине с Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...