Frage

Ich habe folgendes Problem:

Ich habe ein Bild JScrollPane enthält.

Die scrollpane befindet sich in einem JPanel zusammen mit anderen Komponenten, um das Ganze mit einem Border Layout zu können (die scrollpane der Mitte ist, und ich habe etwas im Süden).

Dieses JPanel ist in einer JSplitPane.

Die JSplitPane ist schließlich in einem JFrame.

JFrame
{
 JSplitpane
 {
  JPanel(BorderLayout)
  {
   JScrollPane(CENTER)
   {
    BufferedImage
   }

   JPanel(SOUTH)
   {...}
  }
 }
}

Jetzt Mein Problem ist, dass, wenn ich meinen Rahmen die Größe des Bildes in der scrollPane feinen ändert die Größe, bis er die Bilder Größe erreicht. Dann wird das Bild gestreckt, was ich verhindern will. Ich versuchte, die JScrollPane in einem JPanel Verpackung, die mit einem Flowlayout ist das Layout. Das funktioniert gut für das Ändern der Größe wenig, aber die Bildlaufleisten verschwinden, sobald ich den Rahmen ändern.

I überwog die scrollPane die Methode setSize () und fand heraus, dass die Größe des scrollpane immer auf die Größe des Bildes festgelegt wird, wenn der Rahmen der Größe verändert wird. Ich habe keine Ahnung, wie man das allerdings beheben.

Jeder Hinweis geschätzt wird.

Cheers,

Ben

War es hilfreich?

Lösung

Ich glaube, Sie sollten gut sein, wenn Sie setMaximumSize() auf der JScrollPane mit der Breite / Höhe der BufferedImage nennen (aber noch nicht ausprobiert).

Und als allgemeine Bemerkung: es ist eine schlechte Idee, außer Kraft zu setzen Swing-Komponenten nur Kinder hinzufügen. Verwenden Sie stattdessen eine Controller-Klasse erstellen, die Basiskomponenten erzeugt und komponiert.


Ich lese Ihre Frage, und frag mich: ist das Problem, dass das Bild gestreckt wird, oder dass die Bildlaufleisten verschwinden? Wenn Sie die Bildlaufleisten auf dem Bildschirm selbst behalten wollen, wenn nichts zu blättern es gibt, werfen Sie einen Blick auf den setVerticalScrollBarPolicy() und setHorizontalScrollBarPolicy() Methoden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top