public class bioscope extends Component{
static int width;
static int height;
public void paint(Graphics g){
try {
BufferedImage crow = ImageIO.read(new File("photos/houseCrow.jpg"));
this.width = crow.getWidth();
this.height = crow.getHeight();
System.out.println(this.height);
System.out.println(this.width);
g.drawImage(crow, 0, 0, null);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Bioscope: Have a peek!");
frame.getContentPane().add(new bioscope());
frame.setVisible(true);
frame.setSize(bioscope.width, bioscope.height);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setResizable(false);
System.out.println(bioscope.height);
System.out.println(bioscope.width);
}
}
出力ウィンドウの高さと幅はゼロですが、これはイライラしていますが、まだ解明できるようです。何が私を驚かせるのはprintlnコマンドの出力です。私はこれが4行目の出力であると予想しました:492,640,492,640。しかし、まず0,0を印刷し、明らかに停止します。しかし、全画面表示され、492,640がプリントアウトに追加されます!今あなたが知っているのは、全画面表示になるたびにprintlnを呼び出し、492,640が追加されます。 JFrameウィンドウを最小化またはサイズ変更しようとすると、同様の追加が発生します。JFrame寸法の問題
なぜこのようなことが起こり、JFrameウィンドウの最初のサイズが492,640でないのはなぜですか?画像は正常に添付されましたが、ウィンドウのサイズを変更した場合に表示されるようになりました。
は、なぜあなたは '期待します492,640,492,640'?これらの値はどこにありますか? –
492,640はもちろん、私のJFrameウィンドウに追加する画像の高さと幅です。申し訳ありませんが私の質問は少し前に不完全に見えたので、私は投稿を完了しましたが、ドラフトが何らかの奇妙な理由で部分的にのみ保存されるとは想像できませんでした。 –