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

JScrollBar + JTextArea

13.08.2013, 21:19. Показов 3704. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать так чтобы когда не хватало места на текст автоматически появлялся JScrollBar? Вот мой код, но он не работает.
Java
1
2
3
4
5
JScrollPane scrollPane = new JScrollPane(serverMessage);
        serverMessage.setPreferredSize(new Dimension(215,250));
        
        //.....
        panelServMes.add(scrollPane,BorderLayout.CENTER);
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clientgui;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
 
/**
 *
 * @author Admin
 */
public class ClientGUI extends JFrame{
    JButton button;
    JTextField messageText;
    JTextArea serverMessage;
 
    ClientGUI(){
        super("Чат");
        super.setSize(250,400);
        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(new FlowLayout());
        setLocation(400,100);
        
        JPanel panelB = new JPanel();
        JPanel panelServMes = new JPanel();
        button = new JButton("Відправити");
        messageText = new JTextField(10);
        serverMessage = new JTextArea();
        
        button.setPreferredSize(new Dimension(100,20));
        serverMessage.setLineWrap(true);
        serverMessage.setWrapStyleWord(true);
 
        JScrollPane scrollPane = new JScrollPane(serverMessage);
        serverMessage.setPreferredSize(new Dimension(215,250));
        
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(serverMessage.getText().equals(""))
                    serverMessage.setText(messageText.getText());
                else
                    serverMessage.setText(serverMessage.getText() + "\n" + messageText.getText());
            }
        });
        
        messageText.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(serverMessage.getText().equals(""))
                    serverMessage.setText(messageText.getText());
                else
                    serverMessage.setText(serverMessage.getText() + "\n" + messageText.getText());
            }
        });
        
        
        panelServMes.add(scrollPane,BorderLayout.CENTER);
        panelB.add(messageText);
        panelB.add(button);
 
        add(panelServMes);
        add(panelB);
        setResizable(false);
        setVisible(true);
    }
    
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                new ClientGUI();
            }
        });
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.08.2013, 21:19
Ответы с готовыми решениями:

JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Где ошибка?
JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Label label=new JLabel(' '); ...

getValueIsAdjusting(); в JScrollBar..
Привет, Мне нужно изменить свойства JScollBar таким образом что пока не отпустиль левую кнопку мыши, моя таблица не изменился(т.е....

JScrollBar(Pane).value
После заполнения текстового поля полоса прокрутки не прокручивается вверх. Код: package test; import...

9
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
13.08.2013, 23:28
Java
1
2
serverMessage = new JTextArea(15,20);
//serverMessage.setPreferredSize(new Dimension(215,250));
1
1 / 1 / 3
Регистрация: 04.06.2013
Сообщений: 48
13.08.2013, 23:32  [ТС]
verylazy, scrollbar появился, но если становится много текста он своих размеров не изменяет.
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
13.08.2013, 23:36
я исправил свое сообщение выше
0
1 / 1 / 3
Регистрация: 04.06.2013
Сообщений: 48
13.08.2013, 23:41  [ТС]
verylazy, Спасибо! Но есть еще один вопрос: мне хотелось чтобы когда в textarea поступал новый текст, он отображался сразу а не чтобы было нужно самому прокручивать scrollbar, чтобы увидеть этот текст. Как это можно сделать?
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
13.08.2013, 23:54
а у меня текст сам и появляется когда нажимаю кнопку Отправить
это если закомментировать setPreferredSize
0
1 / 1 / 3
Регистрация: 04.06.2013
Сообщений: 48
14.08.2013, 00:33  [ТС]
Вот как сейчас конструктор выглядит, но почему-то у меня не так работает как должно.
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
ClientGUI(){
        super("Чат");
        super.setSize(250,400);
        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(new FlowLayout());
        setLocation(400,100);
        
        JPanel panelB = new JPanel();
        JPanel panelServMes = new JPanel();
        button = new JButton("Відправити");
        messageText = new JTextField(10);
        
        serverMessage = new JTextArea(15,20);
        serverMessage.setLineWrap(true);
        serverMessage.setWrapStyleWord(true);
        serverMessage.setEditable(false);
        
        button.setPreferredSize(new Dimension(100,20));
 
        JScrollPane scrollPane = new JScrollPane(serverMessage);
        //scrollPane.setPreferredSize(new Dimension(215,250));
        
        
        button.addActionListener(this);
        
        messageText.addActionListener(this);
        
        
        panelServMes.add(scrollPane,BorderLayout.CENTER);
        panelB.add(messageText);
        panelB.add(button);
 
        add(panelServMes);
        add(panelB);
        setResizable(false);
        setVisible(true);
    }
0
23 / 23 / 7
Регистрация: 21.04.2013
Сообщений: 52
14.08.2013, 09:43
Цитата Сообщение от S_O_A_D Посмотреть сообщение
JScrollPane scrollPane = new JScrollPane(serverMessage); //scrollPane.setPreferredSize(new Dimension(215,250));
задавать размеры serverMessage не нужно - мы хотим, чтобы размеры его как раз изменялись и росли.
а вот размеры самого scrollPane задать нужно - эта рамка будет показываться всегда такого размера,
и если внутренности (serverMessage) буду большими - появится полоса прокрутки для просмотра внутренностей.
как понял метод setCaretPosition() был неизвестен
Java
1
2
3
4
5
6
JTextArea area = new JTextArea();
area.setText("asdasdassssssssssssssssssss\nsssssssssssssssaaaaasss\nssssssssaaasss\nssssssssaaaaaaaaaaaasss\nsssssssssssssssssssssss");
area.setCaretPosition(area.getText().length());
JScrollPane bar = new JScrollPane(area);
bar.setPreferredSize(new Dimension(250,60));
add(bar);
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
14.08.2013, 09:48
Проверил еще раз. Пишу текст в нижнее, маленькое поле и нажимаю Отправить много раз. Текст появляется и появляется в верхнем большом поле. Когда доходит до низа - появляется скроллбар и видна последняя строчка текста.

Или я не понимаю что нужно, или мы живем в разных вселенных, где джава работает по разному.
0
1 / 1 / 3
Регистрация: 04.06.2013
Сообщений: 48
14.08.2013, 16:58  [ТС]
Довольно таки странно, если забираю вот эту строку serverMessage.setEditable(false);, то все работает. Но мне нужно что в textarea нельзя было вводить текст! А можно еще каким-то способом запретить ввод в textarea?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.08.2013, 16:58
Помогаю со студенческими работами здесь

JScrollBar getValue() не доходит до getMaximum() как сделать?
Есть форма с JScrollPane в документации сказано, что максимальное значение -- это getMaximum(). НО scrollbar ни когда не доходит до этого...

Скроллинг JTextArea
Всем привет! На форме есть JTextArea, JScrollPane. Хочу, чтобы при заполнении JTextArea была возможность проскроллить вниз, чтобы...

Из txt в jTextArea
Помогите нубу =) Нужно чтобы текст загружался в jTextArea1. Я с разных форумов и просто из гугла понатаскал куски кода и у меня получилось,...

JSlider и JTextArea
Всем привет! Возник вопрос : какой листенер нужно использовать в такое случае? Есть слайдер и jtextarea, нужно сделать так, чтобы при...

Размер JTextArea
Возможно ли задать размер JTextArea? Знаю возможно сделать это в количестве символов, но возможно ли задать размер относительно экрана, то...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru