2014-11-25 2 views
-1

В настоящее время я пытаюсь сделать это возможным для JPanel быть увеличено Моя идея заключается в значительной степени следующим образом:.JPanel внутри JScrollPane скроллинга не отображается

У меня есть JPanel (обычай с перекрываться paintComponent и т.д.) что я помещаю внутри своего JScrollPane.

Что делать, чтобы увеличить масштаб, чтобы мои JPanel с помощью следующего кода (переопределение метода краски)

@Override 
public void paint(Graphics g) 
{ 
    Graphics2D g2 = (Graphics2D) g; 

    if (m_hasBeenScaled) 
    { 
     m_transform.scale(m_zoomValue, m_zoomValue); 
     g2.setTransform(m_transform); 
     m_transform = new AffineTransform(); 
    } 

    super.paint(g); 
} 

Это хорошо работает, однако мой JScrollPane не отображает полосы прокрутки, как я масштабироваться, чтобы больше Габаритные размеры. Как заставить JScrollPane отвечать на этот масштаб моего JPanel?

Вот код, я использую, чтобы создать как мой JPanel и JScrollPan (Grid мой класс расширения JPanel):

m_gridPanel = new Grid(); 
m_gridContainer = new JScrollPane(m_gridPanel); 
m_gridContainer.setPreferredSize(new Dimension(605, 605)); 
+1

1) См. [Должен ли я избегать использования методов набора (Предпочтительный | Максимум | Минимум) в Java Swing?] (Http://stackoverflow.com/q/7229226/418556) (Да.) 2) Для лучше помогите раньше, опубликуйте [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверенный пример) или [SSCCE] (http://www.sscce.org/) (Short, Self Contained, Правильный пример). 3) Я подошел бы так же, как в [этом ответе] (http://stackoverflow.com/a/27119520/418556). –

+0

Это 'm_gridContainer.setPreferredSize (новое измерение (605, 605));' это плохая идея, размер компонента будет изменяться на основе коэффициента масштабирования. Масштабирование компонента намного сложнее, чем изменение преобразования, вы должны также переводить события мыши, см. Http://stackoverflow.com/questions/21174997/how-to-add-mouselistener-to-item-on-java -swing-canvas/21175125 # 21175125 например ... – MadProgrammer

+0

Я теперь переопределяю метод getPreferredSize, как вы сказали, и теперь я вижу появляющиеся полосы прокрутки. Однако, когда я сдвигаю их, представление не меняется вообще. Любая причина для этого? – Bypp

ответ

1

Размер компонента будет зависеть от коэффициента масштабирования, а также, для достижения этой цели , установив preferredSize на «статическое» значение, не имеет смысла, вместо этого вы должны переопределить getPreferredSize и отрегулировать размер, возвращенный приложением коэффициента масштабирования к нему.

Масштабирование компонента намного сложнее, чем изменение преобразования, вы должны также переводить события мыши, см., Например, How to add MouseListener to item on Java Swing Canvas.

+0

Я теперь переопределяю метод getPreferredSize, как вы сказали, и теперь я вижу появляющиеся полосы прокрутки. Однако, когда я сдвигаю их, представление не меняется вообще. Любая причина для этого? – Bypp

+1

Рассмотрите возможность использования [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer

Смежные вопросы