Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > SpringLayout и здравый смысл ?


Автор: maslyak 5.7.2009, 04:31
Привет всем, имеем минимально простой пример - окно и label.
Код

package springlayouttest;

import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Spring;
import javax.swing.SpringLayout;
import javax.swing.SwingUtilities;

public class Main implements Runnable {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Main());
    }

    public void run() {
        JFrame f = new JFrame();

        f.setSize(440, 440);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = f.getContentPane();
        SpringLayout layout = new SpringLayout();
        contentPane.setLayout(layout);

        JLabel label = new JLabel("test");
        Spring spring = Spring.constant(0, 100, 500);

        layout.putConstraint(SpringLayout.WEST, label, spring, SpringLayout.WEST, contentPane);
        //layout.putConstraint(SpringLayout.EAST, contentPane, spring, SpringLayout.EAST, contentPane);
        layout.putConstraint(SpringLayout.NORTH, label, spring, SpringLayout.NORTH, contentPane);
        layout.putConstraint(SpringLayout.SOUTH, contentPane, spring, SpringLayout.SOUTH, label);

        contentPane.add(label);
        f.setVisible(true);
    }
}


Вопросов много, запустите сразу этот код.
Почему при резайзе окошка по вертикали лейбл двигается и по вертикали и по горизонтали ?
В доках пишут, что последний параметр в putContraint является началом пружинки, а второй параметр является концом. Но от этого не легче, почему поведение меняется непредсказуемым образом, когда мы меняем начало и конец? В моем мире пружины растягиваются в обе стороны одинаково  smile 
Как вообще правильно понять, куда начало, а куда конец пихнуть  smile  smile 

По-моему надо было назвать этот менеджер RandomLayout.

Автор: COVD 5.7.2009, 04:40
Сейчас не помню точно, но там вроде два constraints надо - по вертикали и по горизонтали. У вас три - один явно лишний. Наверное, последний - там, где SOUTH.  

Автор: maslyak 5.7.2009, 04:53
да, но почему лишний ? разве нельзя с двух сторон пружинки поставить ?

Автор: COVD 5.7.2009, 05:36
Я могу рабочий пример найти, но обьяснить ассоциацию с пружиной - нет. Голову этим забивать имеет смысл если постоянно лэйаутами занимаетесь. Но тогда, возможно, у вас своя ассоциация родится, более удачная, чем пружина.  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)