@My1Name

Как привязать картинку к размеру окна JFrame?

Есть вот такое окно:6376a0865285b115640478.jpeg
Картинка загружается через меню File следующим образом:
JLayeredPane imageLayer = new JLayeredPane();
		imageLayer.setBorder(BorderFactory.createTitledBorder("View"));
		imageLayer.setLayout(new BorderLayout());
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(imageLayer, BorderLayout.CENTER);
		load.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BufferedImage image = loadImage();
				if(image!=null) {
					JLayeredPane formPanel = new JLayeredPane();
					formPanel.setBounds(5, 10, 670, 570);
					ImageIcon icon = new ImageIcon(image);
					JLabel label = new JLabel(icon);
					JScrollPane scroll = new JScrollPane(label, 
					JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
					JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
					formPanel.add(scroll);
					scroll.setBounds(5, 10, 570, 470); 
					imageLayer.add(formPanel);
				}
			}
		});

Как привязать загружаемую картинку к размеру окна, чтоб скроллинг появлялся автоматически, при необходимости? Если убрать JLayeredPane, то картинка отображается только после того, как размер окна будет изменён (в ручную делаю ресайз и появляется картинка. Иначе она не отображается).
load.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
				BufferedImage image = loadImage();
				if(image!=null) {
					ImageIcon icon = new ImageIcon(image);
					JLabel label = new JLabel(icon);
					imageLayer.add(label);
				}
			}
		});
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@My1Name Автор вопроса
Нашёл решение... Вместо imageLayer.add(label); пишем imageLayer.add(new JScrollPane(label), BorderLayout.CENTER); Однако, окно нужно подёргать чтоб картинка появилась :) Поэтому, код получается следующего вида:
JLayeredPane imagePanel = new JLayeredPane();
		imagePanel.setBorder(BorderFactory.createTitledBorder("View"));
		imagePanel.setLayout(new BorderLayout());
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(imagePanel, BorderLayout.CENTER);
		load.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BufferedImage image = loadImage();
				if(image!=null) {
					ImageIcon icon = new ImageIcon(image);
					JLabel label = new JLabel(icon);
					imagePanel.add(new JScrollPane(label), BorderLayout.CENTER);
          // меняем размер окна после загрузки
					frame.setSize(800, 600); 
          // Позиционируем окно по центру экрана
					frame.setLocationRelativeTo(null);
				}
			}
		});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы