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);
}