亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

瀏覽圖像文件并使用Java Swing顯示它

瀏覽圖像文件并使用Java Swing顯示它

幕布斯6054654 2019-11-04 10:05:12
我的問題是,單擊Browse按鈕后,它會顯示目錄中的所有文件供選擇,然后所選的圖像會正確顯示在GUI中。但是,當我第二次單擊“瀏覽”按鈕時,它僅顯示舊圖像,而不顯示新圖像。請幫助我。package GUI;import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.Graphics2D;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.GroupLayout;import javax.swing.GroupLayout.Alignment;@SuppressWarnings("serial")public class MainAppFrame extends JFrame {    private JPanel contentPane;    File targetFile;    BufferedImage targetImg;    public JPanel panel,panel_1;    private static final int baseSize = 128;    private static final String basePath =![enter image description here][1]            "C:\\Documents and Settings\\Administrator\\Desktop\\Images";    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    MainAppFrame frame = new MainAppFrame();                    frame.setVisible(true);                    frame.setResizable(false);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame.     */    public MainAppFrame() {        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setBounds(100, 100, 550, 400);        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));        setContentPane(contentPane);        contentPane.setLayout(new BorderLayout(0, 0));
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

每次選擇新圖像時,都在這里不必要地創建了組件,并且錯誤地出現在這里:


public void setTarget(File reference) {

    //....

    panel_1.setLayout(new BorderLayout(0, 0));

    panel_1.add(new JLabel(new ImageIcon(targetImg))); 

    setVisible(true);

相反,我建議您在選擇任何文件/圖像之前,從一開始就創建所有這些組件,然后在此方法中,根據圖像創建一個ImageIcon,然后簡單地使用此Icon來設置已經存在的JLabel,而不是新的JLabel。只需調用myLabel.setIcon(new ImageIcon(targetImg));


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 1203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號