Вывод изображения на JPanel - Java (241563)
Формулировка задачи:
Добрый вечер!
Делаю приложение для вывода выбранной картинки на панель. Но картинка к сожалению не отрисовывается на панели. Помогите пожалуйста разобраться в том, что я делаю не так. Спасибо!
Листинг программы
- package saprtest;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- import javax.swing.JButton;
- import javax.swing.JFileChooser;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- public class SaprTest {
- JFrame jf = new JFrame("Тестовое окно");
- JPanel jp1 = new JPanel(new BorderLayout());
- WorkPanel wp1 = new WorkPanel();
- JButton jb1 = new JButton("Открыть");
- JButton jb2 = new JButton("Выход");
- JOptionPane jop1 = new JOptionPane();
- public static void main(String[] args) {
- SaprTest sp1 = new SaprTest();
- sp1.start();
- }
- public void start (){
- jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
- jf.setVisible(true);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- jf.add(jp1, BorderLayout.WEST);
- jp1.setSize(100, 100);
- jp1.add(jb1, BorderLayout.NORTH);
- jb1.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent ae) {
- JFileChooser openFile = new JFileChooser();
- openFile.setDialogTitle("Выбор графической подложки");
- openFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
- //openFile.setFileFilter(new MyFileFilter(".jpg", ""));
- int ret = openFile.showOpenDialog(null);
- if (ret == JFileChooser.APPROVE_OPTION){
- try {
- File file = openFile.getSelectedFile();
- Image image = ImageIO.read(file);
- Graphics gr = image.getGraphics();
- wp1.paintComponent(gr, image);
- }
- catch (FileNotFoundException ex){
- JOptionPane.showMessageDialog(jop1, "Такого файла не существует");
- }
- catch (IOException ex) {
- JOptionPane.showMessageDialog(jop1, "Исключение ввода-вывода");
- }
- }
- }
- });
- jp1.add(jb2, BorderLayout.SOUTH);
- jb2.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent ae) {
- System.exit(0);
- }
- });
- jf.add(wp1, BorderLayout.CENTER);
- wp1.setVisible(true);
- //wp1.setBackground(Color.black);
- wp1.setPreferredSize(new Dimension(100, 100));
- }
- }
Листинг программы
- package saprtest;
- import java.awt.Graphics;
- import java.awt.Image;
- public class WorkPanel extends javax.swing.JPanel {
- @Override
- protected void paintComponent (Graphics g) {
- super.paintComponent(g);
- g.drawImage(null, 0, 0, this);
- }
- protected void paintComponent(Graphics g, Image img){
- super.paintComponent(g);
- g.drawImage(img, 0, 0, this);
- }
- }
Решение задачи: «Вывод изображения на JPanel»
textual
Листинг программы
- package javafxpixel;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javafx.application.Application;
- import javafx.embed.swing.SwingFXUtils;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.VBox;
- import javafx.stage.FileChooser;
- import javafx.stage.Stage;
- import javax.imageio.ImageIO;
- /**
- * @web [url]http://java-buddy.blogspot.com/[/url]
- */
- public class JavaFXPixel extends Application {
- ImageView myImageView;
- @Override
- public void start(Stage primaryStage) {
- Button btnLoad = new Button("Load");
- btnLoad.setOnAction(btnLoadEventListener);
- myImageView = new ImageView();
- VBox rootBox = new VBox();
- rootBox.getChildren().addAll(btnLoad, myImageView);
- Scene scene = new Scene(rootBox, 300, 300);
- primaryStage.setTitle("java-buddy.blogspot.com");
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- public static void main(String[] args) {
- launch(args);
- }
- EventHandler<ActionEvent> btnLoadEventListener
- = new EventHandler<ActionEvent>(){
- @Override
- public void handle(ActionEvent t) {
- FileChooser fileChooser = new FileChooser();
- //Set extension filter
- FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
- FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
- fileChooser.getExtensionFilters().addAll(extFilterJPG, extFilterPNG);
- //Show open file dialog
- File file = fileChooser.showOpenDialog(null);
- try {
- BufferedImage bufferedImage = ImageIO.read(file);
- Image image = SwingFXUtils.toFXImage(bufferedImage, null);
- myImageView.setImage(image);
- } catch (IOException ex) {
- Logger.getLogger(JavaFXPixel.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- };
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д