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

JScrollPane и графика. Полоса прокрутки не работает

30.01.2012, 18:05. Показов 6526. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Я отрисовываю графические обьекты и вставляю их в JScrollPane. Но полосы прокрутки при этом не появляются. То есть то, что выходит за рамки JScrollPane, не показывается. Если вставляю что-нибудь из swing, например JLabel очень длинную, всё работает. Но как только что-то из графики, не идёт.

Вот такой примерно код:

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
public class SelectionTask
{
   public void makeShape (Graphics g)
 {
     Graphics2D g2 = (Graphics2D)g;
     Line2D line2 = new Line2D.Double(300,230,1800, 230); // очень длинная полоса
      g2.draw(line2);
  }
}
 
 
public class ShapeExample extends JPanel 
{
  public void paintComponent(Graphics g) 
{    
    super.paintComponent(g);
    new SelectionTask(200, 100, 240, 121, 4).makeShape(g); 
  }
public static void main(String[] args) 
 {
    JFrame frame = new JFrame();   
    frame.setSize(500, 400);
    JScrollPane  pane = new JScrollPane(new ShapeExample());
    frame.getContentPane().add(pane);
    frame.setVisible(true);
  }
}
Всё изображается, (в данном случае длинная полоса) но прокрутка не работает. То есть невозможно всю полосу полностью просмотреть.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2012, 18:05
Ответы с готовыми решениями:

JScrollPane не появляется полоса прокрутки
Здравствуйте. У меня есть JScrollPane. На ней лежит JPanel. Пишу строчку jPanel2.setSize(jPanel2.getWidth(), 1000); Но полоса прокрутки...

Полоса прокрутки
Здравствуйте. Вот какая проблема : У меня есть окно(JDialog) в котором я сделал нужный фон(добавил панель и рисую на ней), дальше мне...

Диаграмма Ганта JFreeChart, не появляется полоса прокрутки
Диаграмму Ганта я выводить научился, пытаюсь теперь добавить в неё полосу прокрутки. Для этого использую класс SlidingGanttCategoryDataset....

4
3 / 3 / 0
Регистрация: 25.08.2010
Сообщений: 213
30.01.2012, 18:51
Есть мнение, что надо перебить у твоей панели методы, возвращающие размер, чтобы он соотвтетствовал желаемой картине или создавая ЖСкроллПанель выставить стиль с "приндительными" тулбарами.
0
0 / 0 / 1
Регистрация: 08.04.2010
Сообщений: 110
30.01.2012, 20:12  [ТС]
С принудительными тулбарами пробовал. И просто большой размер панели задавал, не работает. Каким-то образом Скроллпэйн не "видит" эти рисунки и считает панель пустой. А пустую панель передвигать в скроллпейне невозможно, какой большой она бы ни была..
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
01.02.2012, 14:07
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    private static class GraphPane extends JPanel {
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g;
            Line2D line2 = new Line2D.Double(300,230,1800, 230); // очень длинная полоса
            g2.draw(line2);
        }
    }
 
    public MyFrame() {
        JPanel ctx = new JPanel(new BorderLayout());
        this.setContentPane(ctx);
        GraphPane gp = new GraphPane();
        JScrollPane scroller = new JScrollPane(gp);
        ctx.add(scroller, BorderLayout.CENTER);
        //
        ctx.setPreferredSize(new Dimension(100, 100));
        gp.setPreferredSize(new Dimension(2000, 2000));
        //
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
0
0 / 0 / 1
Регистрация: 08.04.2010
Сообщений: 110
02.02.2012, 02:22  [ТС]
Решение найдено. Тут весь прикол в setPreferredSize
Без этого почему-то не функционирует. Всем спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2012, 02:22
Помогаю со студенческими работами здесь

Как на JScrollPane добавить несколько JScrollPane?
как на JScrollPane добавить несколько JScrollPane? Мне нужно на фрейме разместить пару JLabel, а под ними JTable. я так понимаю,...

Не работает полоса прокрутки
Здравствуйте! Появилась небольшая проблемка Создаю контейнер Panel и в него динамически загружаю несколько ListBox, при запуске полоса...

Не работает полоса прокрутки
Добрый день всем! У меня такая проблема: ползунок созданной мной полосы прокрутки не перемещается, а стоит всегда в верхней части...

Не работает полоса прокрутки в приложении
Здравствуйте. Сделал простейшее приложение в Visual Studio. Никакого программирования - просто встроил веб-элемент в форму и всё. Так вот....

ScrollViewer: почему не работает полоса прокрутки?
Подскажите,пожалуйста, почему не работает полоса прокрутки? <Grid> <ScrollViewer> ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru