2017-05-22 11 views
0

jscroll paneを使用してjframeに画像を追加しようとしています。いくつか試しましたが、画像は背景にしか表示されません。ここjframe内のjscrollpaneに画像を追加できません

enter image description here

私のコードです:

private void initComponents(){ 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    ImageImplement panel = new ImageImplement(new ImageIcon(mean.get(0)).getImage()); 
    jScrollPane1.add(panel); setVisible(true); setSize(400,400); setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 
    class ImageImplement extends JScrollPane { 
    private Image img; 
    public ImageImplement(Image img) { this.img = img; 
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null)); 
    setPreferredSize(size); 
    setMinimumSize(size); 
    setMaximumSize(size); 
    setSize(size); 
    setLayout(null); } 
    public void paintComponent(Graphics g) { 
    g.drawImage(img, 0, 0, null); } 
    } 
+0

1)早いほど良いのヘルプについては、[MCVE]または[ショート、自己完結、正しい例](http://www.sscce.org/)を投稿します。 2)画像を取得する方法の1つは、[このQ&A](http://stackoverflow.com/q/19209650/418556)に表示されている画像にホットリンクすることです。 3)Java GUIは、異なるロケールの異なるPLAFを使用して、異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と一緒に.. –

+0

.. [空白]のレイアウトパディングとボーダー(http://stackoverflow.com/a/17874718/418556)。 4) 'g.drawImage(img、0、0、null);' **すべての 'JComponent'は' ImageObserver'ですので、 'g.drawImage(img、0、0、this); ' –

答えて

2

はJScrollPaneに延長しないでくださいとカスタムペイントを行いません。

代わりに、ImageIconJLabelを作成してください。次に、ラベルをスクロールペインに追加し、スクロールペインをフレームに追加します。

だから、基本的なロジックは次のとおりです。

ImageIcon icon = new ImageIcon(...); 
JLabel label = new JLabel(icon); 
JScrollPane scrollPane = new JScrollPane(label); 
frame.add(scrollPane, BorderLayout.CENTER); 
+0

しかし、どのように画像の寸法を設定するのですか? – ani

+0

@ani、そうではありません。ラベルは、画像の寸法に基づいて自動的に優先サイズを決定します。 – camickr

+0

JScrollPaneの現在のイメージを新しいイメージ – ani

関連する問題