Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/40: Рейтинг темы: голосов - 40, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3

Вывод изображения на JPanel

01.08.2015, 20:06. Показов 8395. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Делаю приложение для вывода выбранной картинки на панель. Но картинка к сожалению не отрисовывается на панели. Помогите пожалуйста разобраться в том, что я делаю не так. Спасибо!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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));
        }
    
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2015, 20:06
Ответы с готовыми решениями:

Вывод изображения на JPanel
Программа должна выводить определенное изображение на панель по нажатию соответствующей кнопки. Как я понимаю решение: надо создать метод,...

Сохранение изображения с jPanel
Здраствуйте. Возникла проблема с сохранением изображения нарисованого на JPanel. Немного погуглив, нашел пару способов это сделать. 1....

Вывод картинки на JPanel
Пожалуйста подскажите, необходимо вывести фото на JPanel. Приведен мой код, где ошибка? public class FotoLable extends JFrame { ...

4
 Аватар для skaiver
120 / 38 / 11
Регистрация: 02.03.2011
Сообщений: 218
02.08.2015, 02:45
Лучший ответ Сообщение было отмечено fireiexe как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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);
            }
 
        }
    };
}
1
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3
02.08.2015, 18:48  [ТС]
skaiver, большое спасибо! А с использованием swing есть идеи?
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
06.08.2015, 15:38
В гугле забанили?
1
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3
06.08.2015, 18:17  [ТС]
Всем спасибо за участие, все заработало, может кому пригодиться:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package saprtest;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
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();
    BufferedImage bufferedImage = null;
             
    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);
        jf.add(wp1, BorderLayout.CENTER);
        wp1.setVisible(true);
        wp1.setPreferredSize(new Dimension(100, 100));
        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();
                        bufferedImage = ImageIO.read(file);
                        wp1.setImage(bufferedImage);
                        wp1.repaint();
                    } 
                    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);
            }
        });
        
    }
    
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package saprtest;
 
import java.awt.Graphics;
import java.awt.image.BufferedImage;
 
public class WorkPanel extends javax.swing.JPanel {
    
    BufferedImage image = null;
    
    public void setImage (BufferedImage img){
        image = img;
    }
    
    @Override
    protected void paintComponent (Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    } 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2015, 18:17
Помогаю со студенческими работами здесь

Добавление JPanel на JPanel, не отображаются те, которые добавлены сверху
Здравствуйте. У меня есть панель fon на которой у меня картинка с фоном и 15 панелей на которых нарисованы шарики,пытаюсь добавить панели с...

Вывод картинок на объект JPanel
Друзья подскажите, не могу в сети найти нормального ответа на тему как разместить на JPanel рисунок из файла. Вот пример моего кода. ...

Вывод картинок на объект JPanel
Друзья подскажите, не могу в сети найти нормального ответа на тему как разместить на JPanel рисунок из файла. Вот пример моего кода. ...

Вывод рисунка jpg на jPanel
Кто знает подскажите как это делается без лишних классов? Так как по таймеру будет обновляться то чем проще тем лучше, вот что пока...

Вывод текущей даты на JPanel
Не совсем понимаю как вывести текущую дату(без времени) на jPanel. Нужна подсказка:)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru