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