2017-12-22 6 views
0

画像をScrollPane(Panel上)に設定し、ImageをPanelの幅に設定したいとします。画像をScrollPaneに設定して幅を調整します

Imageを大きくしたり、ScrollPaneにラベルを設定するために、JLabelを使用します。

画像をパネルの幅に合わせたい場合、高さは同じプロプリットにする必要があります。 ScrollPaneのイメージのビットを重ねて垂直スクロールバーを取得していること、

BufferedImage image; 
JLabel picLabel = new JLabel(); 
int w = pInfo.getWidth(); 

pInfo.removeAll(); 
try { 
    image = ImageIO.read(getClass().getResourceAsStream("/Matrix/ausstoepseln.jpg")); 
    picLabel = new JLabel(new ImageIcon(image));          
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

JScrollPane scrollP = new JScrollPane (picLabel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
scrollP.setBorder(new TitledBorder (new EtchedBorder(), "Info")); 
pInfo.add(scrollP); 

問題がある:

はここ(pInfoは、私のJPanelに画像を追加することです)私のコードです。 イメージのサイズ変更(ImgSclrまたはGraphic2Dによる)は動作しません。なぜなら、ScrollPaneも短くなるからです。 この後にラベルを追加してScrollPaneの境界を設定しようとしましたが、どちらも機能しませんでした。

enter image description here

これを行う方法はありますか?

答えて

0

チェックアウト:

  1. Scrollable Panel。これにより、スクロールペインへのコンポーネントの追加幅を強制的にビューポートの幅にすることができます。

  2. Stretch Icon。これにより、使用可能なスペースを満たすためにアイコンのサイズを変更することができます。あなたは同じ比率を保つことができます。

だから、あなただけにJScrollPaneにあなたのJLabelを追加することができるはずとスクロールペインのサイズを変更すると画像が自動的にサイズ変更する必要があります。

+0

thx、音が良い、私はそれを試してみましょう。 – Cauti

+0

Unortunally私はそれを動作させることはありません。 StretchIconはイメージをロードしていないようです。コードは以下の変更を除いて上記のとおりです: 'picLabel.setIcon(new StretchIcon(image)); ScrollablePanel scrollP =新しいScrollablePanel(新しいMigLayout( ""、 "[100%、grow]"、 "100%、grow")); scrollP.add(picLabel); pInfo.add(scrollP); ' 出力は空です。 ImageIconを使用すると画像が表示されますが、ScrollablePanelのために実際のサイズになります。 – Cauti

+0

MigLayoutは使用しないでください。単純なBorderLayoutが行います。とにかく、StretchIconが "比例サイズ"を使用するときに大きくサイズ変更されないことが分かりました。だから、この解決策はうまくいかないでしょう。 – camickr

関連する問題