awt - ScrollPane

0

Witam, chcę wewnątrz Frame(używam GridBagLayout) dodać ScrollPane, który pozwoli mi na przesuwanie umieszczonego w jego wnętrzu Panela. Rozmiar panela w trakcie działania programu zmienia swój rozmiar. I właśnie tu pojawia się problem - przy zmienia rozmiaru panela, nie zmienia się zakres w którym mogę przesuwać suwakiem. Będę bardzo wdzięczny za pomoc w rozwiązaniu problemu (w awt, nie w Swingu).

0

poniżej zamieszczam fragment kodu.

MyPanel panel=new MyPanel();
ScrollPane scroll = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);

Klasa MyPanel:

public class MyPanel extends Panel
{
 volatile BufferedImage sygnal;

 public MyPanel()
 {
 super();
 clearImage(800, 300);
 }

  public void clearImage(int szer, int wys)
  {
   setPreferredSize(new Dimension(szer, wys));
   sygnal=new BufferedImage( szer , wys , BufferedImage.TYPE_INT_RGB);
    for(int x=0; x<szer; x++)
       for(int y=0; y<wys; y++)
         sygnal.setRGB(x, y,(Color.white).getRGB());
    this.repaint();
  }

 public void initialize()
 {
  setPreferredSize(new Dimension(10000,300));
  setVisible(true);
 }

 public void paint( Graphics g )
 {
  g.drawImage(sygnal, 0, 0,  this);
 }
}

Inicjalizacja w innej klasie(dziedziczącej po Frame):

 public void init()
  {
  setBackground(Color.gray);
  panel.initialize();
  drawLayout();
  scroll.setPreferredSize(new Dimension(800,300));
  scroll.add(panel);
  pack();
  setVisible(true);
  scroll.setVisible(true);

Wewnątrz funkcji drawLayout:

gbc.weightx=1; gbc.weighty=1;
 gbc.fill=GridBagConstraints.NONE;
 gbc.anchor=GridBagConstraints.NORTHWEST;
 changeConstraints(gbc, 1, 0, 15,1);
 grid.setConstraints(scroll, gbc);
 add(scroll);

Chcąc zmienić rozmiar panela, z głównej klasy(dziedziczącej po Frame) wywołuje metodę panel.clearImage() , jednak nie powoduje to zmiany zakresu suwaka ze ScrollPane. Próbowałem zaraz po wywołaniu clearImage zmieniać rozmiar ScrollPane za pomocą setSize, setPreferredSize itd ale nie przynosiło to żadnych efektów. Bardzo proszę o jakieś wskazówki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1