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

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

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

Программа должна выводить определенное изображение на панель по нажатию соответствующей кнопки. Как я понимаю решение: надо создать метод, принимающий в качестве аргумента адресс картинки и через него перерисовывать панель. А как это оформить? Два дня мучаюсь, а компилятор мне ошибку выдает( (Убрал кнопки, т.к. их слишком много и все то, что мешало компилятору)
Листинг программы
  1. import java.awt.EventQueue;
  2. import javax.swing.JFrame;
  3. import javax.swing.JPanel;
  4. import javax.swing.border.MatteBorder;
  5. import java.awt.Color;
  6. import javax.swing.UIManager;
  7. import javax.swing.border.LineBorder;
  8. import javax.swing.JList;
  9. import javax.swing.JTable;
  10. import javax.swing.JButton;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.ActionEvent;
  13.  
  14. public class Test {
  15. private JFrame frame;
  16. /**
  17. * Launch the application.
  18. */
  19. public static void main(String[] args) {
  20. EventQueue.invokeLater(new Runnable() {
  21. public void run() {
  22. try {
  23. Test window = new Test();
  24. window.frame.setVisible(true);
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. });
  30. }
  31. /**
  32. * Create the application.
  33. */
  34. public Test() {
  35. initialize();
  36. }
  37. /**
  38. * Initialize the contents of the frame.
  39. */
  40. private void initialize() {
  41. frame = new JFrame();
  42. frame.setTitle("\u0410\u043A\u043A\u043E\u0440\u0434\u044B");
  43. frame.setBounds(100, 100, 1050, 550);
  44. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  45. frame.getContentPane().setLayout(null);
  46. JPanel panel = new JPanel();
  47. panel.setBorder(new LineBorder(new Color(0, 0, 0), 4));
  48. panel.setBounds(667, 0, 367, 390);
  49. frame.getContentPane().add(panel);
  50. JButton A = new JButton("A");
  51. A.addActionListener(new ActionListener() {
  52. public void actionPerformed(ActionEvent arg0) {
  53. }
  54. });
  55. A.setBounds(10, 11, 89, 23);
  56. frame.getContentPane().add(A);
  57. JButton Am = new JButton("Am");
  58. Am.setBounds(10, 33, 89, 23);
  59. frame.getContentPane().add(Am);
  60. }
  61. }

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

textual
Листинг программы
  1. import java.awt.Graphics;
  2. import java.awt.Image;
  3. import javax.swing.ImageIcon;
  4. import javax.swing.JPanel;
  5.  
  6. public class ImagePanel extends JPanel {
  7.  
  8.     private Image image;
  9.  
  10.     public ImagePanel(String path) {
  11.         image = getImageFromFile(path);
  12.     }
  13.  
  14.     private Image getImageFromFile(String path) {
  15.         return new ImageIcon(path).getImage();
  16.     }
  17.  
  18.     public void paintComponent(Graphics g) {
  19.         super.paintComponent(g);
  20.         if (image != null) {
  21.             g.drawImage(image, 0, 0, null);
  22.  
  23.         } else {
  24.             System.out.println("Нет картинки");
  25.         }
  26.     }
  27.  
  28.     public void changeImage(String path) {
  29.         image = getImageFromFile(path);
  30.         repaint();
  31.     }
  32. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут