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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неправильное Центрирование элементов, панель с boxLayout'ом 
:(
    Опции темы
almagnit
Дата 19.9.2008, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не могу правильно расположить элементы на панели, JComboBox выравнивается по левой стороне, 

JCheckBox и JButton по правой, выравнивнивается по центру только JLabel. Компоненты выстраиваю по оси X.

ЗЫ:
Написанию кода в целом это не сильно мешает, но в конечном итоге придется что-то делать, а что именно ума не приложу ...
PM MAIL ICQ   Вверх
dorogoyIV
Дата 19.9.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а можно как нибудь попонятнее объяснить проблему?  smile 
PM MAIL   Вверх
Kangaroo
Дата 20.9.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

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



almagnit, код кинь и опиши проблему нормально.


--------------------
Lost....
PM MAIL MSN   Вверх
almagnit
Дата 20.9.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот немного по конкректнее

Панель используемая мною для расположения элементов распологается в основной панели и является дополнительной:

Код

BorderLayout border = new BorderLayout();
bunker.setLayout(border);
bunker.add(rightBox,BorderLayout.EAST);


rightBox  является панелью на которой элементы не центруются

PS:
Очень буду рад конструкивным вопросам ... !
PM MAIL ICQ   Вверх
dorogoyIV
Дата 20.9.2008, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(almagnit @  20.9.2008,  00:35 Найти цитируемый пост)
Вот немного по конкректнее

что то не работает ссылка
да ладно, напиши свой Layout, и не парься  smile 
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Almagnit extends JFrame
{
 public Almagnit()
 {
  setLayout(new GridLayout(0, 3, 4, 0));

  AlmagnitPanel p1 = new AlmagnitPanel(Color.RED);
  AlmagnitPanel p2 = new AlmagnitPanel(Color.GREEN);
  AlmagnitPanel p3 = new AlmagnitPanel(Color.BLUE);

  p1.setLayout(new VerticalLayout(VerticalLayout.LEFT));
  p2.setLayout(new VerticalLayout());
  p3.setLayout(new VerticalLayout(2));

  add(p1, "West");
  add(p2);
  add(p3, "East");
 }

 public static void main(String [] args)
 {
  JFrame f = new Almagnit();
  f.setBounds(100, 100, 400, 300);
  f.setDefaultCloseOperation(3);
  f.setVisible(true);
 }
}

class AlmagnitPanel extends JPanel
                    implements ActionListener
{
 Color color;

 AlmagnitPanel(Color color)
 {
  this.color = color;
  setBackground(color);

  add(new JCheckBox("JCheckBox"));
  add(new JButton("JButton"));
  add(new JLabel("JLabel"));

  ButtonGroup bg = new ButtonGroup();
  JRadioButton jrb1 = new JRadioButton("LEFT", false);
  JRadioButton jrb2 = new JRadioButton("CENTER", false);
  JRadioButton jrb3 = new JRadioButton("RIGHT", false);
  bg.add(jrb1);
  bg.add(jrb2);
  bg.add(jrb3);

  add(jrb1);
  add(jrb2);
  add(jrb3);

  jrb1.addActionListener(this);
  jrb2.addActionListener(this);
  jrb3.addActionListener(this);

  Component [] c = getComponents();
  for(int i = 0; i < c.length; i++)
   if(c [i] instanceof JButton)
    c [i].setBackground(c [i].getBackground());
   else
    c [i].setBackground(color);
 }

 public void actionPerformed(ActionEvent e)
 {
  if(e.getActionCommand().equals("LEFT"))
   setLayout(new VerticalLayout(VerticalLayout.LEFT));
  if(e.getActionCommand().equals("CENTER"))
   setLayout(new VerticalLayout(VerticalLayout.CENTER));
  if(e.getActionCommand().equals("RIGHT"))
   setLayout(new VerticalLayout(VerticalLayout.RIGHT));

  validate();
 }
}

class VerticalLayout implements LayoutManager
{
 static final int LEFT = 0;
 static final int CENTER = 1;
 static final int RIGHT = 2;
 int alignment = 0;

 VerticalLayout()
 {
  this(1);
 }

 VerticalLayout(int alignment)
 {
  this.alignment = alignment;
 }

 public void layoutContainer(Container parent)
 {
  Component [] components = parent.getComponents();
  int w = 0, h = 0;

  for(int i = 0; i < components.length; i++)
  {
   int width = components [i].getPreferredSize().width;
   int height = components [i].getPreferredSize().height;

   if(alignment == 0)
    components [i].setBounds(w, h, width, height);
   if(alignment == 1)
    components [i].setBounds((parent.getWidth() - width)/2, h, width, height);
   if(alignment == 2)
    components [i].setBounds(parent.getWidth() - width, h, width, height);

   h+= height;
  }
 }

 public Dimension preferredLayoutSize(Container parent)
 {
  int width = 0, height = 0;

  Component [] components = parent.getComponents();

  for(int i = 0; i < components.length; i++)
  {
   if(width < components [i].getPreferredSize().width)
    width = components [i].getPreferredSize().width;

   height+= components [i].getHeight();
  }

  return new Dimension(width, height);
 }
 public void addLayoutComponent(String name, Component comp){}
 public void removeLayoutComponent(Component comp){}
 public Dimension minimumLayoutSize(Container parent)
 {
  return new Dimension(0, 0);
 }
}

PM MAIL   Вверх
almagnit
Дата 23.9.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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


 




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


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

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