-1

スクロール可能なペインにいくつかの画像を読み込もうとしています。しかし、何らかの理由でそれは表示されていません。これが画像を追加するための私のコードです。

 private JFileChooser fileChooser = new JFileChooser(){
        @Override
        public void approveSelection(){
            File files[] = fileChooser.getSelectedFiles();
            JPanel panel = new JPanel(new GridLayout(files.length, 1));
            for(int lop=0; lop< files.length; lop++){

                BufferedImage image = null;
                try {                
                    image = ImageIO.read(files[lop]);
                } catch (IOException ex) {}
                BufferedImage img = new BufferedImage(100, 100, 1);
                Graphics2D g = img.createGraphics();
                g.drawImage(image, 0, 0, 100, 100, null);
                g.dispose();

                ImageIcon icon = new ImageIcon(img);
                JLabel lable = new JLabel(icon);
                panel.add(lable);    

            }
            jScrollPane1.getViewport().add(panel);    
            super.approveSelection();
        }
    };

上記のfileCHooserを使用して、垂直スクロールペインにロードする画像をいくつか選択します。どういうわけか、scrollPane水平スクローラーは長さの変化を示しますが、スクロールペインにコンテンツがありません。次のスクリーンショットを確認してください。Shapesのタイトルの下:拡張スクロールバーを備えた空のコンテナが表示されます

スクリーンショット

よろしく、Aqif Hamid

4

1 に答える 1

3

問題は次のコード行にあります。

jScrollPane1.getViewport().add(new JFrame().add(panel));

なぜJFrameを作成するのですか?

次のようにJScrollPaneを作成する必要があります。

jScrollPane = new JScrollPane(panel);

または、スクロールペインのビューを次のように設定します。

jScrollpane.setViewportView(panel);

また、を使用する必要がありますpanel.add(lable)。GridLayoutは、ラベルを適切な場所に配置します。そして、例外を無視するべきではありません。空のcatchブロックを次のように変換します。

try {                
    image = ImageIO.read(files[lop]);
} 
catch (IOException ex) {
    throw new RuntimeException(ex);
}
于 2012-06-24T19:57:10.883 に答える