Jpanel. Как масштабировать и обновлять картинку? - Java
Формулировка задачи:
В центре JFrame есть JPanel c отрисованной картинкой. Она большая, я думаю привязать ее к наименьшему краю JFrame и через .getScaledInstance у меньшить, но я не знаю как ее постоянно перерисовывать картинку.
А еще как получить размеры еще не созданного окна? Что бы задать начальные размеры картинки?
JFrame
JPanel
package ru.chess; import javax.swing.*; import java.awt.*; public class Chess extends JFrame { TilePanel tilePanel = new TilePanel(); Chess(){ super("Chess"); setLayout(new BorderLayout()); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setBounds(300,100,800,600); add(tilePanel, BorderLayout.CENTER); } public static void main(String[] args) { Chess c = new Chess(); c.setVisible(true); } }
package ru.chess; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.io.File; import java.io.IOException; public class TilePanel extends JPanel{ private Image ChessTile; private Image scaledChessTile; TilePanel(){ try{ ChessTile = ImageIO.read(new File("C:\\Users\\makit_000\\IdeaProjects\\Chess\\src\\ru\\chess\\imeges\\chessTile.jpg")); scaledChessTile = ChessTile.getScaledInstance(600,600,Image.SCALE_SMOOTH); }catch (IOException e){ System.out.println(" Шахматная доска не загрузилась "); } } @Override protected void paintComponent(Graphics g){ super.paintComponent(g); g.drawImage(scaledChessTile, 0, 0, null); } }
Решение задачи: «Jpanel. Как масштабировать и обновлять картинку?»
textual
Листинг программы
@Override protected void paintComponent(Graphics g){ super.paintComponent(g); g.drawImage(ChessTile, 0, 0, getWidth(),getHeight(), null); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д