Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 11.03.2013
Сообщений: 43

Опять про layout

19.03.2013, 19:05. Показов 1055. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую!
Извиняюсь, но проведя 3 часа в попытках разобраться с layout я в конец запутался, поэтому вынужден обратится здесь (надеюсь на помощь)
Итак, для компоновки форм использую GridBagLayout. Почему его? Потому что мне показалось, что им достаточно просто пользоваться. Но не тут то было. В книжке, по которой учусь, приведен пример использования этого самого менеджера форм, для упрощения написания кода создан класс GBC который унаследует GridBagConstraints, таким образом, все значения для GridBagLayout соответствуют названия функций (это я про то, что не хочу захламлять пост кодом и выкладывать код класса GBC).
Итак, собственно класс описывающий мой фрайм:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
public class AddNewSupAgreement {
        public static void main(String[] args) {
        window = new AddFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);
    }
}
 
class AddFrame extends JFrame{
    /**
     * 
     */
    private static CreateConnection conect;
    private static final long serialVersionUID = 1L;
    private int screenW;  
    private int screenH;
    private JMenuBar menuBar;
    private JMenu fileMenu;
    private JMenuItem certificateMenu;
    private GridBagLayout layout;
    private JLabel dateLabel;
    private JLabel statusDpsLabel;
    private JLabel numberLabel;
    private JLabel numberDgLabel;
    private JTextField dateField;
    private JTextField numberField;
    private JComboBox<Object> statusDpsCombo;
    private JComboBox<Object> numberDgCombo;
    private JButton printB;
    private JButton okB;
    private JButton writeB;
    private JButton closeB;
    private JButton calB;
    private JButton search1;
    private JButton search2;
    private JButton search3;
    private JButton search4;
    private JButton search5;
    private JButton select1;
    private JButton select2;
    private JButton select3;
    private JButton select4;
    private JButton select5;
 
    public AddFrame(){
        ResizeFrame();
        setBounds(screenW/4, screenH/4, screenW/2,screenH/2);
        layout          = new GridBagLayout();
        JPanel allPanel = new JPanel();
        JPanel panel    = new JPanel();
        JPanel spanel   = new JPanel();
        allPanel.setLayout(layout);
        panel.setLayout(layout);
        spanel.setLayout(layout);
        allPanel.add(panel, new GBC(0,0));
        allPanel.add(spanel, new GBC(0,1));
        Border eth = BorderFactory.createLoweredBevelBorder();
        Border title = BorderFactory.createTitledBorder(eth, "Добавление нового дополнительного соглашения");
        allPanel.setBorder(title);
        dateLabel       = new JLabel("Дата заведения доп. соглашения: ");
        statusDpsLabel  = new JLabel("Статус доп. соглашения: ");
        numberLabel     = new JLabel("Номер доп. соглашения: ");
        numberDgLabel   = new JLabel("Номер договора");
        dateField       = new JTextField(10);
        numberField     = new JTextField(20);
        statusDpsCombo  = new JComboBox<Object>();
        numberDgCombo   = new JComboBox<Object>();
 
        menuBar         = new JMenuBar();
        fileMenu        = new JMenu("Справка");
        certificateMenu = new JMenuItem("Показать справку");
        printB          = new JButton("Печать");
        okB             = new JButton("OK");
        writeB          = new JButton("Запись");
        closeB          = new JButton("Закрыть");
        calB            = new JButton("Календарь");
        search1 = new JButton("Поиск");
        search2 = new JButton("Поиск");
        search3 = new JButton("Поиск");
        search4 = new JButton("Поиск");
        search5 = new JButton("Поиск");
        search1.setPreferredSize(new Dimension(23, 23));
        search2.setPreferredSize(new Dimension(23, 23));
        search3.setPreferredSize(new Dimension(23, 23));
        search4.setPreferredSize(new Dimension(23, 23));
        search5.setPreferredSize(new Dimension(23, 23));
        select1 = new JButton("Выбрать");
        select2 = new JButton("Выбрать");
        select3 = new JButton("Выбрать");
        select4 = new JButton("Выбрать");
        select5 = new JButton("Выбрать");
        select1.setPreferredSize(new Dimension(23, 23));
        select2.setPreferredSize(new Dimension(23, 23));
        select3.setPreferredSize(new Dimension(23, 23));
        select4.setPreferredSize(new Dimension(23, 23));
        select5.setPreferredSize(new Dimension(23, 23));
        fileMenu.add(certificateMenu);
        menuBar.add(fileMenu);
        setJMenuBar(menuBar);
        panel.add(dateLabel, new GBC(0,0).setAnchor(GBC.EAST));// дата
        panel.add(dateField, new GBC(1,0,1,1).setFill(GBC.HORIZONTAL).setWeight(100, 0).setInsets(1));
        panel.add(calB, new GBC(2,0,3,1).setAnchor(GBC.WEST));
        panel.add(numberDgLabel, new GBC(0,2).setAnchor(GBC.EAST));
        panel.add(numberDgCombo, new GBC(1,2).setFill(GBC.HORIZONTAL).setWeight(100, 0).setInsets(1));
        panel.add(search1, new GBC(2,2).setAnchor(GBC.WEST));
        panel.add(select1, new GBC(3,2).setAnchor(GBC.WEST));
        panel.add(statusDpsLabel, new GBC(0,4).setAnchor(GBC.EAST));
        panel.add(statusDpsCombo, new GBC(1,4).setFill(GBC.HORIZONTAL).setWeight(00, 0).setInsets(1));
        panel.add(numberLabel, new GBC(0,6).setAnchor(GBC.EAST));
        panel.add(numberField, new GBC(1,6).setFill(GBC.HORIZONTAL).setWeight(100, 0).setInsets(1));
        panel.add(search3, new GBC(2,6).setAnchor(GBC.WEST));
        panel.add(select3, new GBC(3,6).setAnchor(GBC.WEST));
                
        spanel.add(printB, new GBC(0,1,2,1));
        spanel.add(okB, new GBC(2,1,2,1));
        spanel.add(writeB, new GBC(4,1,2,1));
        spanel.add(closeB, new GBC(7,1,2,1));
        add(allPanel);
    }   
        
}
с Вашего позволения, убрал часть не нужного кода, который на расположение ни как не влияет. Как видно, я делаю так: создаю панель, в нее кидаю еще 2 - 1-я наполняется всякой требухой, 2-я кнопками. Устанавливаю значения (0,0) для 1 и (0,1) для 2, чтоб были друг под другом (надеясь что первая будет начинаться в левом верхнем, вторая внизу). Компилим и получаем (во вложение)
То есть, внутри 2-х мелких панелей компоненты располагаются правильно, но сами панели почему то криво (либо я дурак). Помогите разобраться.
p.s.
из всего того, что прочел уяснил что GridBagLayout не самый лучший вариант, лучше FormLayout от JGoodies. Но вот установить его в Eclipse - мне не удается
Миниатюры
Опять про layout  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2013, 19:05
Ответы с готовыми решениями:

Опять про ПР... :/
Вот у меня опять назрел вопрос, который пытаюсь уже давно выяснить... Для примера возьмем сайт на WP (все, думаю, знают, что это) ...

опять про ПР
Если у меня 1 страничный сайт и с index.php идут 12 локальных линков на форум, фурум я не яндексирую. Хочу удержать PR на морде, как мне...

Опять про кодировку
При размещении сайта на хостинге столкнулся с такой бедой как изменение кодировки. Подключаю вот этот файл инклудом. &lt;!DOCTYPE...

5
3 / 3 / 0
Регистрация: 11.03.2013
Сообщений: 43
19.03.2013, 23:09  [ТС]
ни кто не хочет помочь?
0
SexЕngineer
21.03.2013, 20:27
IMHO. У тебя один и тот же new GridBagLayout() используется для всех трех panel. может быть для каждой panel создать свой собственный new GridBagLayout().
0 / 0 / 2
Регистрация: 21.03.2013
Сообщений: 6
21.03.2013, 20:38
az@rt, я тоже долго пытался разобраться с gridBagLayout-ом, в итоге бросил и решил проблему комбинацией BorderLayout-а и BoxLayout-ов внутри него))
0
SexЕngineer
21.03.2013, 21:39
Я пользуюсь gridBagLayout... Ничего особо сложного нет.
Вот здесь все расписано
3 / 3 / 0
Регистрация: 11.03.2013
Сообщений: 43
21.03.2013, 22:52  [ТС]
Цитата Сообщение от SexЕngineer Посмотреть сообщение
Я пользуюсь gridBagLayout... Ничего особо сложного нет.
Вот здесь все расписано
Спасибо, почитаем.

Добавлено через 12 минут
Цитата Сообщение от SexЕngineer Посмотреть сообщение
IMHO. У тебя один и тот же new GridBagLayout() используется для всех трех panel. может быть для каждой panel создать свой собственный new GridBagLayout().
думаю вряд ли, потому что пробовал делать одну панель и точно так же все было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2013, 22:52
Помогаю со студенческими работами здесь

Опять про "склейку"
Здравствуйте. Поиском пользовался - информация разная, оттого и спрашиваю, просьба не ругать. Для обозначения главного зеркала нужно: ...

Опять же про Пеппу
Свинка Пеппа может поднимать грузы массой не более m1=5 кг, а её младший брат Джордж − не более m2=1 кг. Им необходимо перетащить...

Опять про коммутатор
Возник такой вопрос. Если к примеру есть 3 портовый коммутатор и на каждом порту висит по одному хосту A (порт 1), B(порт2) и C(порт 3). A...

опять про MenuStrip
Уважаемые знатоки, помогите! Нужно динамически создавать ComboBox и желательно Progress bar внутри меню. с прогрессбаром конечно не...

Опять про TOR
Всем привет. Решил попытаться настроить на своем ноуте TOR, сам tor установить смог без проблем, на всякий случай установил Vidalia, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru