Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расстояния в GrigLayout 
V
    Опции темы
freshAngel
  Дата 8.4.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Привет.
Есть код:
Код

SimpleWindow()
{
super("Пробное окно");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,3,5,10));
panel.add(new JButton("Кнопка"));
panel.add(new JButton("+"));
panel.add(new JButton("-"));
panel.add(new JButton("Кнопка с длинной надписью"));
panel.add(new JButton("еще кнопка"));
setContentPane(panel); setSize(250, 100); 
}


Получилось:

user posted image

С правой стороны фрейма (от кнопок) непонятный отступ, хотя с левой его нет.
Что это может быть!?

Это сообщение отредактировал(а) freshAngel - 8.4.2009, 22:51
PM MAIL   Вверх
math64
Дата 9.4.2009, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



GridLayout рассчитан на 2 * 3 = 6 кнопок одинакового размера, это пространство для шестой кнопки. Для кнопок разного размера используй GridBagLayout или комбинируй два BoxLayout
PM   Вверх
freshAngel
  Дата 9.4.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Цитата(math64 @ 9.4.2009,  07:33)
GridLayout рассчитан на 2 * 3 = 6 кнопок одинакового размера, это пространство для шестой кнопки. Для кнопок разного размера используй GridBagLayout или комбинируй два BoxLayout

Отлично.
Добавляем шестую кнопку:

user posted image

Отступ остался.
PM MAIL   Вверх
math64
Дата 10.4.2009, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



Этот отступ такой маленький, что я его сразу не заметил. Ширина клиентской части фрейма (250-?) на три не делится, остаётся остаток, который не распределяется между колонками, которые должны быть одной ширины
PM   Вверх
freshAngel
  Дата 10.4.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Цитата(math64 @ 10.4.2009,  08:24)
Этот отступ такой маленький, что я его сразу не заметил. Ширина клиентской части фрейма (250-?) на три не делится, остаётся остаток, который не распределяется между колонками, которые должны быть одной ширины

Спасибо.
У меня сделано, вот так:
Код

class MyFrame extends JFrame
{
    public MyFrame()
    {

JPanel panel = new MyPanel();
setTitle("App");
             
this.setResizable(true); // Запрещаем менять размер
setContentPane(panel);
     pack();
    }
}

class MyPanel extends JPanel
{
 public MyPanel()
        {
this.setPreferredSize(new Dimension(370,218));
setMinimumSize(this.getPreferredSize());
this.setLayout(new GridLayout(3,5,2,2));
        }
}


Делим 370/5 = 74
Но отступ справа все - равно остается.
PM MAIL   Вверх
math64
Дата 11.4.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



А учёл что расстояний между кнопками на 1 меньше чем кнопок?
PM   Вверх
Connie
Дата 12.4.2009, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Если мышкой медленно перетаскивать правую границу, то видно, что этот промежуток то появляется, то исчезает.
При использовании pack() вместо setSize промежутка нет.

setSize(251, 100);
вот так отступа то же нет smile
PM MAIL WWW   Вверх
freshAngel
Дата 14.4.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Цитата(math64 @ 11.4.2009,  19:43)
А учёл что расстояний между кнопками на 1 меньше чем кнопок?

Теперь учел.
У меня на фрейме отображается пять панелей и согласно:

Код

this.setLayout(new GridLayout(3,5,2,2));


Появляется пятый отступ с правой стороны, равный 2px
Решение: установить PreferredSize() на 2px меньше, чтобы скрыть ненужный отступ.

Спасибо большое: math64

Connie, тоже спасибо.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.