Вывод изображения на 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();
}
}