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