LINUX.ORG.RU

Java и контейнеры


0

0

Никто не подкинет ссылку по работе с контейнерами на Java(ну или хотябы GTK) желетаельно на руском а то у меня никак не получаеться разместить объекты на форме все они кудато сезжают. Или хотябы скажите есть форма на ней в две колонки (первая лайблы вторая EditBoxы или Comboboы) нужно чтобы весь этот блок был вверху форма и вторая колонка была выровнена по горизонтали и едит боксы и комбо боксы имели бы одинаковый размер(короче типовая форма для ввода десятка другово параметров) Короче в какие контейнеры это все нужно запихнуть?

★★
Ответ на: комментарий от phoenix

Это уже до дыр зачитанно GridBag как я понял ориентируеться на PrefferedSize а как мне зделать так чтобы во второй колонке едиты и комбы имели одинаковую длинну а то некрасиво както та к кто в лес кто по дрова . Первую колонку добавляю как relative а вторую как remainder.

x86 ★★
() автор топика

Либо я чегото не понимаю, либо я отстал,
но помоему проще вот так:

public Component initPanel() {

    Box mainPanel = Box.createVerticalBox() ;

    mainPanel.add(Box.createVerticalStrut(5)) ;

    
    // левая колонка
    JPanel lPanel = new JPanel() ;

    lPanel.setLayout(new GridLayout(4,1)) ;

    lPanel.add(new JLabel("ID : ")) ;        

    lPanel.add(new JLabel("Название : ")) ;

    lPanel.add(new JLabel("Тип: ")) ;

    lPanel.add(new JLabel("Статус : ")) ;



    
// правая колонка
    JPanel rPanel = new JPanel() ;

    rPanel.setLayout(new GridLayout(4,1)) ;

    id = new JTextField(20) ;

    id.setEditable(false) ;

    name = new JTextField(20) ;

    type = new JTextField(20) ;

    type.setEditable(false) ;

    status = new JTextField(20) ;

    rPanel.add(id) ;

    rPanel.add(name) ;

    rPanel.add(type) ;    

    rPanel.add(status) ;

    
    // соединяем колонки

    JPanel des = new JPanel() ;

    des.setLayout(new BorderLayout()) ;

    des.add(lPanel, BorderLayout.WEST) ;

    des.add(rPanel, BorderLayout.CENTER) ;



    // добавляем 
    mainPanel.add(des) ;

    

    JPanel label2 = new JPanel() ;

    label2.setLayout(new BorderLayout()) ;

    label2.add(new JLabel("Краткое описание:"), BorderLayout.WEST) ;

    mainPanel.add(label2) ;

    

    description = new JTextArea(4, 30) ;

    

    mainPanel.add(new JScrollPane(description)) ;

    

    JPanel bPanel = new JPanel() ;

    bPanel.setLayout(new FlowLayout()) ;

    create = new JButton("Создать") ;

    create.setActionCommand("CREATE") ;

    create.addActionListener(this) ;

    cancel = new JButton("Отменить") ;

    cancel.setActionCommand("CANCEL") ;

    cancel.addActionListener(this) ;

    bPanel.add(create) ;

    bPanel.add(cancel) ;

    

    mainPanel.add(Box.createVerticalStrut(5)) ;

    

    mainPanel.add(bPanel) ;

    

    return mainPanel ;    

  }

Пример рабочий.
удачи.

gapik
()
Ответ на: комментарий от gapik

Спасибо пример полезный наверное так и зделаю просто я до этого хотел это разместить на большой форме и чтобы все элементы в колонках имели размер самого максимального и не растягивались вместе с формой, те чтобы вся группа элементов была прижата к верхнему левому краю. а не заполняла всю оставшуюся часть формы а то TextFieldы на пол формы напоминают уже ворд Ж-) а не поле для ввода 3х цифр короче чтобы все элементы в кажной колонки имели размер PrefferredSize для самого большего элемента в своей колонки но не больше. Но видимо придеться клепать отдельной небольное диалоговое окно.

x86 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.