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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выравнивание текста в JProgressBar 
:(
    Опции темы
korob2001
Дата 2.10.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Добрый день!
Столкнулся с такой проблемой:
Есть самый обыкновенный JProgressBar.
Код

JProgressBar pb = new JProgressBar();
pb.setMinimum(0);
pb.setMaximum(100);
pb.setValue(50);
pb.setPreferredSize(new Dimension(450, 35));
pb.setStringPainted(true);
pb.setString("Hello.");

Текст, в данном случае Hello, расположен по центру прогресс бара. Вопрос: Как это изменить? Мне нужно, что бы текст выравнивался по левому краю.

PS: Прогуглил уже всю сеть. Такое впечатление, что такой вопрос возник только у меня.  smile 

Это сообщение отредактировал(а) korob2001 - 2.10.2010, 13:59


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
jk1
Дата 2.10.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Такое впечатление, что такой вопрос возник только у меня.

Я это впечатление разделяю, даже не представляю зачем бы такое могло понадобиться.
Решение есть, но грубоватое:
Код

        pb.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                FontMetrics metrics = pb.getFontMetrics(e.getComponent().getFont());
                int width = pb.getWidth();
                StringBuilder builder = new StringBuilder(pb.getString().trim());
                while (metrics.stringWidth(builder.toString()) < width - 20) {
                   builder.append(" ");
                }
                pb.setString(builder.toString());
            }
        });



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
korob2001
Дата 2.10.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата(jk1 @  2.10.2010,  14:13 Найти цитируемый пост)
Я это впечатление разделяю, даже не представляю зачем бы такое могло понадобиться.

В этом прогрессе строка описывает текущее действие, например:
Код

Пожалуйста подождите... считываю данные из XML файлов.
Файл file1.xml успешно прочитан.
Файл file2.xml успешно прочитан.
..........
Устанавливаю соединение с базой данных.
Соединение установлено. Подготавливаю запрос на вставку данных.
Запись 1 из 25810 успешно добавлена в базу данных.
......
......
Вставка данных завершена. Успешно вставлено 25810 из 25810 строк.
Закрываю соединение с базой данных.
Через 15 секунд приложение автоматически будет закрыто.
До закрытия осталось 5 секунд.  Вынужден с вам попрощаться. Пока...

Все строки разной длины, я уже молчу про строки с динамическим содержимым, где в строку вставляются имена файлов, каталогов и т.п.
Не знаю, может это конечно и не верно, но мне кажется гораздо было бы красивее, если бы все эти строки растягивались или сжимались в одну сторону. Текст было бы гораздо легче читать.

За решение спасибо, оно может и грубовато, но оно работает именно так как нужно. Правда я вставил его ещё в методы, которые обновляют строку в прогресс баре, а так же его прогресс, потому как при изменении строки она опять возвращалась в исходное положение.


Это сообщение отредактировал(а) korob2001 - 2.10.2010, 18:54


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
dobrolub
Дата 2.10.2010, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

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



Код

import javax.swing.*;
import java.awt.*;
public class T extends JFrame {
    public static void main(String[] args) {
        JProgressBar pb = new JProgressBar();
        pb.setMinimum(0);
        pb.setMaximum(100);
        pb.setValue(50);
        pb.setPreferredSize(new Dimension(450, 35));
        //      pb.setStringPainted(true);                                                                                                          
        //      pb.setString("Hello.");                                                                                                             

        pb.setLayout(new BoxLayout(pb, BoxLayout.X_AXIS));
        JLabel label = new JLabel("Hello");
        pb.add(label);


        T t = new T();
        t.add(pb);
        t.pack();
        t.setVisible(true);

    }
}


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


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

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