Вывод изображения на JPanel - Java (241023)

Узнай цену своей работы

Формулировка задачи:

Программа должна выводить определенное изображение на панель по нажатию соответствующей кнопки. Как я понимаю решение: надо создать метод, принимающий в качестве аргумента адресс картинки и через него перерисовывать панель. А как это оформить? Два дня мучаюсь, а компилятор мне ошибку выдает( (Убрал кнопки, т.к. их слишком много и все то, что мешало компилятору)
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.MatteBorder;
import java.awt.Color;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Test {
 
    private JFrame frame;
 
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Test window = new Test();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
 
    /**
     * Create the application.
     */
    public Test() {
        initialize();
    }
 
    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setTitle("\u0410\u043A\u043A\u043E\u0440\u0434\u044B");
        frame.setBounds(100, 100, 1050, 550);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        
        JPanel panel = new JPanel();
        panel.setBorder(new LineBorder(new Color(0, 0, 0), 4));
        panel.setBounds(667, 0, 367, 390);
        frame.getContentPane().add(panel);
        
        JButton A = new JButton("A");
        A.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        A.setBounds(10, 11, 89, 23);
        frame.getContentPane().add(A);
        
        JButton Am = new JButton("Am");
        Am.setBounds(10, 33, 89, 23);
        frame.getContentPane().add(Am);
 
    }
}

Решение задачи: «Вывод изображения на JPanel»

textual
Листинг программы
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
 
public class ImagePanel extends JPanel {
 
    private Image image;
 
    public ImagePanel(String path) {
        image = getImageFromFile(path);
    }
 
    private Image getImageFromFile(String path) {
        return new ImageIcon(path).getImage();
    }
 
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (image != null) {
            g.drawImage(image, 0, 0, null);
 
        } else {
            System.out.println("Нет картинки");
        }
    }
 
    public void changeImage(String path) {
        image = getImageFromFile(path);
        repaint();
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5