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. Я ожидал, что это будет четыре строки: 492 640 492 640. Но сначала он печатает 0,0 и, по-видимому, останавливается. Но перейдите в полноэкранный режим, и на распечатке будет добавлено 492 640! Теперь вы знаете, кто будет вызывать println каждый раз, когда вы в полноэкранном режиме, и еще 492 640 будет добавлено. Аналогичные добавления будут возникать, если вы минимизируете или пытаетесь изменить размер окна JFrame.JFrame Вопрос о размере
Почему это произошло, и почему окно JFrame не было размером 492,640 на первом месте? Изображение было прикреплено успешно, хотя, как видно, если я изменил размер окна.
Почему вы ожидаете '492,640,492,640'? Где эти значения? –
492,640 - это, конечно, высота и ширина изображения, которое я добавляю в свое окно JFrame. Извините, потому что мой вопрос появился неполным некоторое время назад, я заполнил сообщение, но не мог предположить, что проект будет сохранен лишь частично по какой-то странной причине. –