2017-02-21 11 views
-1

Пожалуйста, удалите это сообщение как неправильно отредактированное, и я отредактировал его на другой вопрос, который, хотя я задавал новый вопрос. Спасибоудалите это сообщение, пожалуйста, как я неправильно отредактировал его

+0

Вы хотите сохранить соотношение сторон изображения? Что-то вроде этого (http://stackoverflow.com/questions/11959758/java-maintaining-aspect-ratio-of-jpanel-background-image/11959928#11959928) например? Или даже [что-то вроде этого] (http://stackoverflow.com/questions/12876615/how-do-i-resize-images-inside-an-application-when- the-application-window-is-resi/12876799# 12876799) – MadProgrammer

+0

Я просто хочу, чтобы изображение заполнило панель (на изображении изображен восток (на котором трава должна заполнить всю зону зеленого цвета). Я не против, чтобы она растянулась – Samer34

+0

Кроме того, не ссылайтесь на 'src 'path, он не будет существовать, когда проект будет упакован. В ресурсе, содержащемся в пакете' src', скорее всего, будет внедрен в полученный файл jar, что делает его недоступным как «Файл», вам нужно будет использовать «Класс» # getResource' вместо – MadProgrammer

ответ

1

Ответ будет зависеть от целого ряда факторов ...

  • вы хотите сохранить пропорции?
  • Вы хотите, чтобы плитка изображения заполнила область
  • Если вы хотите сохранить соотношение сторон, вы хотите поместить или заполнить свободное пространство.

простое решение было бы использовать Image#getScaledInstance, но если вы идете по этому пути, вы должны иметь чтение из The Perils of Image.getScaledInstance

BufferedImage eastFramerPicture = ImageIO.read(getClass().getResource("/Images/farmer.png")); 
Image scaled = eastFramerPicture.getScaledInstance(600, 600, Image.SCALE_SMOOTH); 

Вы можете также использовать библиотеку как imgsclr

-1

Попробуйте использовать setBounds (x, y, width, height);

+0

Я попробовал eastGrass.setBounds (east.getLocation(). X, center.getLocation(). Y, center.getWidth(), center.getHeight()); Но это не сработало, никаких идей? – Samer34

+0

public usersMenu() { con = MySQLConnect.ConnectDB(); initComponents(); fillList(); jPanel1.setIcon (новый javax.swing.ImageIcon (getClass(). GetResource ("/ images/muis.jpg"))); setResizable (false); Размер dm = Toolkit.getDefaultToolkit(). GetScreenSize(); setBounds (0,0, dm.width, dm.height); jPanel1.setBounds (0,0, dm.width, dm.height); setTitle ("МОНГОЛ УЛСЫН ИХ СУРГУУЛЬ | ТЕСТИЙН СИСТЕМА 1.0 | Хэрэглэгч хэсэг"); //jPanel1.setBounds(dm.width/4, dm.height/4, dm.width/8, dm.height/8); } – ARLEQUINA

1

Проверьте Background Panel. Вы можете отобразить изображение:

  1. при нормальных размерах
  2. масштабируется
  3. плиточного

Так что попробуйте каждый вариант, чтобы увидеть, что вам больше нравится.

Или вы также можете использовать Stretch Icon. Значок на этикетке будет масштабироваться, чтобы заполнить доступное пространство.

Оба решения предоставляют многоразовый код, поэтому вам не нужно писать собственный код каждый раз, когда у вас есть этот тип требований. Код также является динамическим и будет корректироваться при изменении размера кадра.

+0

Не могли бы вы привести пример использования класса Stretch? Я передал изображение, и он ничего не сделал – Samer34