Файл значка Java не показывает изображение - PullRequest
0 голосов
/ 14 октября 2011

Я использую Imagebox JFrame для добавления изображения, я хочу изменить изображение во время выполнения, поэтому я добавляю следующий код, но ничего не отображается.

 javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser();
        filechooser.showDialog(this,"ok");
        File f =  filechooser.getSelectedFile();
        txt_Image.setText(f.getName());        
        FileName = f.getPath()+f.getName();
        Image im= Toolkit.getDefaultToolkit().createImage(FileName);
        ImageIcon receivedIcon =null;
        receivedIcon.setImage(im);
        imagebox1.setimageFile(receivedIcon);

код поля изображения ниже

public class imagebox extends JPanel {
    public void setimageFile(Icon icon) {
       imageFile=icon;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        if (imageFile != null) {            
            Image imageF=  ((ImageIcon)imageFile).getImage();
           g.drawImage(imageF, 0, 0, getWidth(), getHeight(), this);
        } else {
            g.drawLine(0, 0, getWidth(), getHeight());
            g.drawLine(0, getHeight(), getWidth(), 0);
        }
    }
    private Icon imageFile = null;

так почему не отображается ошибка, но я не могу получить изображение в моем imagebox

Ответы [ 2 ]

2 голосов
/ 14 октября 2011
ImageIcon receivedIcon = null;
receivedIcon.setImage(im);

изменено на

ImageIcon receivedIcon = new ImageIcon();
receivedIcon.setImage(im);
2 голосов
/ 14 октября 2011

если вы только отображаете Images, то лучше использовать Icon / ImageIcon напрямую, (чтобы избежать Casting или что-то еще), поместите этот значок в JLabel вместо JPanel

если вы хотите изменить Icon во время выполнения, тогда ваш код будет

myLabel.setIcon(myIcon);
revalidate();
repaint(); 

этот код должен быть выполнен на EDT, в противном случае вы должны заключить строки кода m.m в invokeLater ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...