ティム・ティーボウ:
画像は、以下の、このJavaコードで直接領域に限定されていません。私は、Javaの画像がで全体を表示したい400の高さによって、400幅の画像。私はでそれを行うことを試みframe.setSize(400, 400);
、それが機能していません。私のコードは私が仕事に、このためのコードに入れていたと言われた何であるのdrawImageを含んでいます。私は次に何をすべきかしないでください。
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class SwingSandbox {
public static void main(String[] args) throws IOException {
JFrame frame = buildFrame();
final BufferedImage image = ImageIO.read(new File("/Users/johnzalubski/Desktop/c.jpg"));
JPanel pane = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
};
frame.add(pane);
}
private static JFrame buildFrame() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
return frame;
}
}
ギルバートルブラン:
私はあなたのスイングサンドボックスコードを少し手直し。ここに私が思い付いたものです。
私はそれが400×400の描画パネルに合わせて作られているため、画像が歪んでいます。あなたは、画像を縮小し、アスペクト比を維持する必要があります。
ここで私が行った変更があります。
私はイベントディスパッチスレッド上でSwingコンポーネントを配置する方法invokeLater SwingUtilitiesへの呼び出しを追加しました。
私が推奨サイズを設定することができるように、私は、クラスの描画パネルを作りました。あなたは、描画パネル、ないのJFrameのサイズを設定します。誰がどのように大小のJFrameがある気に?
私は、正しい順序でJFrameのメソッド呼び出しを置きます。
そして、ここのコードです。
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class SwingSandbox implements Runnable {
public static void main(String[] args) throws IOException {
SwingUtilities.invokeLater(new SwingSandbox());
}
private BufferedImage image;
public SwingSandbox() {
try {
image = ImageIO.read(new File("C:\\Users\\Owner\\OneDrive\\Pictures\\Saved Pictures\\StockMarketGame.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
JFrame frame = new JFrame("Image Display");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
DrawingPanel panel = new DrawingPanel(image);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public class DrawingPanel extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage image;
public DrawingPanel(BufferedImage image) {
this.image = image;
this.setPreferredSize(new Dimension(400, 400));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, 400, 400, null);
}
}
}