Отправляет email-рассылки с помощью сервиса Sendsay

Изучаем язык Java

  Все выпуски  

Изучаем язык Java


Java для чайников. Урок 43. Менеджеры расположения компонентов. Продолжение - 5

Оказывается, можно вообще обойтись без менеджеров расположения компонентов. Когда имеет смысл так делать? Например, вы хотите быстренько создать прототип и пока не хотите заморачиваться с лайоутами - согласитесь, иногда это бывает весьма муторно. 

Рассмотрим пример:

import java.awt.Container;

import java.awt.Insets;

import java.awt.Dimension;

import javax.swing.JButton;

import javax.swing.JFrame;

 

public class NullDemo {

    public static void addComponentsToPane(Container pane) {

        pane.setLayout(null);

 

        JButton b1 = new JButton("Первая");

        JButton b2 = new JButton("Вторая");

        JButton b3 = new JButton("Третья");

 

        pane.add(b1);

        pane.add(b2);

        pane.add(b3);

 

        Insets insets = pane.getInsets();

        Dimension size = b1.getPreferredSize();

        b1.setBounds(25 + insets.left, 5 + insets.top,

                     size.width, size.height);

        size = b2.getPreferredSize();

        b2.setBounds(55 + insets.left, 40 + insets.top,

                     size.width, size.height);

        size = b3.getPreferredSize();

        b3.setBounds(150 + insets.left, 15 + insets.top,

                     size.width + 50, size.height + 20);

    }

 

    private static void createAndShowGUI() {

        JFrame.setDefaultLookAndFeelDecorated(true);

 

        JFrame frame = new JFrame("AbsoluteLayoutDemo");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

        addComponentsToPane(frame.getContentPane());

 

        Insets insets = frame.getInsets();

        frame.setSize(300 + insets.left + insets.right,

                      125 + insets.top + insets.bottom);

        frame.setVisible(true);

    }

 

    public static void main(String[] args) {

        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                createAndShowGUI();

            }

        });

    }

}

Вот результат работы данной программы:

Здесь мы задаем отсутствие лайоту командой:

        pane.setLayout(null); 

Расположение кнопок тут задано тупо координатами:

        b1.setBounds(25 + insets.left, 5 + insets.top,

                     size.width, size.height);

        size = b2.getPreferredSize();

        b2.setBounds(55 + insets.left, 40 + insets.top,

                     size.width, size.height);

        size = b3.getPreferredSize();

        b3.setBounds(150 + insets.left, 15 + insets.top,

                     size.width + 50, size.height + 20); 

(С) Шуравин Александр

 

 


В избранное