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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSlider не меняет размеры. Почему? Меняю размеры окна а slider в окне нет 
V
    Опции темы
Mirkes
Дата 5.7.2013, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот код.
Код

        setLayout(new GridBagLayout());
        AddGBL.addGBL(this, new JLabel(MyStr.charUnderChar(axis.name)), 0, 0);
        slider = new JSlider(JSlider.VERTICAL,0,axis.categories.length-1,0);
        slider.setMajorTickSpacing(1);
        slider.setPaintTicks(true);
        slider.addChangeListener(chlist);
        AddGBL.addGBLExps(this, slider, 0, 2, 1, 1, GridBagConstraints.BOTH);

Сначала вставляется JLabel без права увеличения размера Потом Slider с захватом пустого места по вертикали и горизонтали и с требованием занять все место.
При увеличении размере окна размер слайдера не меняется. 
Точнее при очень маленьком окне размер равен 31х36 потом скачком увеличивается до 31х200 и больше не меняется. Не смог найти ни одного метода,связанного с изменением размера.
Кто нибудь может подсказать куда смотреть?

Заранее спасибо.


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


Опытный
**


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

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



После нескольких экспериментов упростил форму до предела и получил следующий результат:
Код

package ex;

import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;

import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.UIManager;

public class TestSlider extends JFrame {

    public TestSlider() {
        super();
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        new TestSlider().setVisible(true);
    }

    private void jbInit() throws Exception {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pan = (JPanel)getContentPane();
        pan.setLayout(new GridBagLayout());
        Insets ins = new Insets(5, 5, 5, 5);
        JButton b = new JButton("Button");
        pan.add(b,
                 new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, ins, 0,
                                        0));
        
        JSlider slider = new JSlider(JSlider.VERTICAL,0,50,10);
        slider.setMajorTickSpacing(1);
        slider.setPaintTicks(true);
        pan.add(slider,
                 new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, ins, 0,
                                        0));
        pack();
    }
}

Работает как положено, а вот этот код
Код

package ex;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;

import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.UIManager;

public class TestSlider extends JFrame {

    public TestSlider() {
        super();
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        new TestSlider().setVisible(true);
    }

    private void jbInit() throws Exception {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pan = (JPanel)getContentPane();
        pan.setLayout(new BorderLayout());
        JPanel pan2 = new JPanel(new GridBagLayout());
        pan2.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        pan2.setBackground(Color.DARK_GRAY);
        
        Insets ins = new Insets(5, 5, 5, 5);
        JButton b = new JButton("Button");
        pan2.add(b,
                 new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, ins, 0,
                                        0));
        
        JSlider slider = new JSlider(JSlider.VERTICAL,0,50,10);
        slider.setMajorTickSpacing(1);
        slider.setPaintTicks(true);
        pan2.add(slider,
                 new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, ins, 0,
                                        0));
        pan.add(pan2,BorderLayout.WEST);
        JLabel lab=new JLabel("This is big big big big label")        ;
        pan.add(lab,BorderLayout.CENTER);
        pack();
    }
}

уже не работает как ожидалось.
Отличие следующее: в условно неработающем примере панель со слайдером вставлена как западная часть в панель с BorderLayout.
При увеличении окна почему то не происходит перераспределения места внутри панели со слайдером. Добавил к панели со слайдером Border и убедился, что размеры панели - меняются. Как с этим бороться?

Это сообщение отредактировал(а) Mirkes - 5.7.2013, 21:52


--------------------
Mirkes
PM MAIL   Вверх
Pawl
Дата 5.7.2013, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Признаться, с GUI работал мало, но вот в этих примерах размеры ползунка меняются плавно, в зависимости от размеров окна (По крайней мере, в SliderDemo2, который я запускал). 


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Mirkes
Дата 5.7.2013, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


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


Эксперт
***


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

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



хорошо, что нашел причину...
так, на будущее, некоторые способы перерисовки...
Код

validate();

Код

revalidate();

Код

repaint();

Код

getLayout().layoutContainer(parent);

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

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

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


 




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


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

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