1

このコード行が機能しない理由を誰かが説明できますか? エラーは表示されません。単に画像のサイズを変更しません。

image = ImageIO.read(file);

image.getScaledInstance(ImageDisplayBox.getWidth(), ImageDisplayBox.getHeight());
ImageDisplayBox.setIcon(new ImageIcon(image));

Stackoverflow の他の回答を見て、多くの人が .getScaledInstance メソッドを使用していることに気付きました。

私はそれを.setIconとして持っているという事実かもしれません-私はJavaが得意ではありませんが。

画像は印刷されますが、サイズの関係で画像の左上のみが表示されます。

4

2 に答える 2

9

戻り値を無視しています。あなたがしたい:

image = image.getScaledInstance(ImageDisplayBox.getWidth(),
                                ImageDisplayBox.getHeight(), 5);

または、物事を明確にするために:

Image scaled = image.getScaledInstance(ImageDisplayBox.getWidth(),
                                       ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));

ドキュメントから:

このイメージのスケーリングされたバージョンを作成します。デフォルトで指定された幅と高さで画像をレンダリングする新しい Image オブジェクトが返されます。元のソース イメージが既に完全に読み込まれている場合でも、新しい Image オブジェクトを非同期で読み込むことができます。

既存の画像の変更については何も言っていないことに注意してください。指定されたサイズで新しい画像を作成するだけです。

于 2012-06-05T11:46:43.103 に答える
0

はい

これはうまくいくはずです

Image scaled =image.getScaledInstance(ImageDisplayBox.getWidth(),
                                      ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));
于 2012-06-05T12:00:30.053 に答える