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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д