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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JPanel в Jpanel-e 
:(
    Опции темы
axod
Дата 17.2.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот пример самой простенькой проги:
Код

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

public class MainC extends JFrame {

    private MyPanel myPanel;
   
       public MainC() {
       super("My Window");

       // 1-
       myPanel = new MyPanel();
       JPanel panel = new JPanel();
       panel.add(myPanel, BorderLayout.NORTH);
       getContentPane().add(new JScrollPane(panel), BorderLayout.CENTER);
       // 2-
   }


   public static void main(String args[]) {
       MainC mainc = new MainC();
       mainc.setDefaultCloseOperation(EXIT_ON_CLOSE);
       mainc.setSize(640, 480);
       mainc.setVisible(true);
   }
}

   class MyPanel extends JPanel {
   public MyPanel() {
       setBackground(Color.white);
       Dimension dim = new Dimension(340, 240);
       this.setMinimumSize(dim);
   }
}


Здесь MyPanel расширяет класс JPanel и в конструкторе главного класса фрейма создаётся
объект на него и помещается в другой JPanel.

Проблема в том что MyPanel создаётся в виде маленького квадратика, а мне нужно чтоб он был на весь фрейм, внутри другого JPanel.

Если заменить код между комментариями на:
Код

       //1-
       myPanel = new MyPanel();
      getContentPane().add(new JScrollPane(myPanel), BorderLayout.CENTER);
       // 2-



То я получу желаемый результат, НО мне надо так как описано выше.
Жду ответа пожалуйСто.

Это сообщение отредактировал(а) axod - 17.2.2005, 20:52
PM MAIL   Вверх
LSD
Дата 17.2.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(axod @ 17.2.2005, 20:51)
panel.add(myPanel, BorderLayout.NORTH);

Объясни зачем для единственного компонента тебе нужно помещать его наверх другой панели? И вообще зачем две вложенных панели если нет других компонентов?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 17.2.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Код

myPanel = new MyPanel();
       MyPanel panel = new MyPanel();
       panel.add(myPanel);
       getContentPane().add(new JScrollPane(panel));



--------------------

PM   Вверх
axod
Дата 17.2.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



М-да спасибо.
Цитата

Объясни зачем для единственного компонента тебе нужно помещать его наверх другой панели? И вообще зачем две вложенных панели если нет других компонентов?


Я же написал что ЭТО простейшая прога что можно выдумать.

Ещё маленький вопросик у меня вообще MyPanel используется для прорисовочки и очень умных взаимосвязей с другими классами

написав
Цитата

      myPanel = new MyPanel();
      MyPanel panel = new MyPanel();
      panel.add(myPanel);
      getContentPane().add(new JScrollPane(panel));

Я не получу батву, ведь к примеру на фрейме у меня пусть должен быть JPanel c кнопками,
JPanel с ещё кнопками и myPanel - ом и ещё другие JPanel. А myPanel просто используется как область прорисовки.

Спасибо за ответ.
PM MAIL   Вверх
Domestic Cat
Дата 17.2.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата
Я не получу батву,


В смысле, неурожай нa свеклу чтоль?

Цитата
А myPanel просто используется как область прорисовки.


Попробуй ради интереса без "области прорисовки". С разными лейаут менеджерами.


--------------------

PM   Вверх
axod
Дата 17.2.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

В смысле, неурожай нa свеклу чтоль?

Да я просто имел ввиду что JPanel где я реализую свой paint() буду также использовать как вместилеще других объектов без всяческих нежелательных последствиях.

Батва - продукт работы(деятельности) человека, который не желательно использовать в пищу.
Батва - те процессы, которые не желательно наблюдать или просто иметь в данном коде.

PM MAIL   Вверх
Domestic Cat
Дата 17.2.2005, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата
Да я просто имел ввиду что JPanel где я реализую свой paint() буду также использовать как вместилеще других объектов без всяческих нежелательных последствиях.


Проще сделать отдельную панель для рисования.
Добавлено @ 22:01
Между прочим contentPane - тоже панель, поэтому еще проще dобавить в MainC метод
Код

   public void paintComponent(Graphics g)
   {
       g.setColor(Color.GREEN);
       g.fillRect(100, 100, 200, 200);
   }



--------------------

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


Новичок



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

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



Да я и делал вообще отдельную панель для рисования просто унаследованая от JPanel и
в которой я реализую метод paintComponent(Graphics2D g2D){...}
просто когда я засовывал эту панель в другую у меня был маленький белый квадратик.

Ну вообще на вопрос мой ответил, спасибо.

PM MAIL   Вверх
Domestic Cat
Дата 17.2.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Я имел в виду ложить myPanel не на panel а на contentPane.


--------------------

PM   Вверх
axod
Дата 17.2.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ладно попробую спасибо! Но мои вопросы ещё будут.
PM MAIL   Вверх
djGri
Дата 21.2.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2 axod
u JPanel - by default stoit FlowLayout - poetomu ti videl malenkuju knopku
PM MAIL   Вверх
Domestic Cat
Дата 21.2.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Он пользовал BorderLayout -
Цитата
panel.add(myPanel, BorderLayout.NORTH);



--------------------

PM   Вверх
djGri
Дата 22.2.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Domestic @ 21.2.2005, 18:12)
Он пользовал BorderLayout -

Цитата
panel.add(myPanel, BorderLayout.NORTH);


Неа! BorderLayout.NORTH - это Dimension
Надо так:
Код

// 1-
      myPanel = new MyPanel();
      JPanel panel = new JPanel();
      panel.setLayout( new BorderLayout());
      panel.add(myPanel, BorderLayout.NORTH);
      getContentPane().add(new JScrollPane(panel), BorderLayout.CENTER);
      // 2-


Это сообщение отредактировал(а) djGri - 22.2.2005, 16:53
PM MAIL   Вверх
AntonSaburov
Дата 22.2.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(djGri @ 22.2.2005, 15:51)
BorderLayout.NORTH - это Dimention

Что-то ты похоже путаешь - это String.
И вообще использовать тогда надо так:
Код

panel.add(BorderLayout.NORTH, myPanel);

В добавлении сначала идет указание места, а потом только компонент.
PM MAIL WWW ICQ   Вверх
djGri
Дата 22.2.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(AntonSaburov @ 22.2.2005, 15:00)
Цитата(djGri @ 22.2.2005, 15:51)
BorderLayout.NORTH - это Dimention

Что-то ты похоже путаешь - это String.
И вообще использовать тогда надо так:
Код

panel.add(BorderLayout.NORTH, myPanel);

В добавлении сначала идет указание места, а потом только компонент.

в jdk 4.2 - так не работает

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0759 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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