2301_78574528 2023-10-14 01:12 采纳率: 71.4%
浏览 7
已结题

非常急,真的想不明白为何自己的代码连基本的按钮显示图片都没法实现,希望得到解析!!

img


package javaclass;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class FramePractise  {
    JFrame jf;
    JButton jb1;
    JButton jb2;
    JButton jb3;
    JButton jb4;
    JButton jb5;

    ImageIcon imageicon;
    JLabel jl;

    JPanel jp2;
    FramePractise framePractise;
    public FramePractise(){

        JPanel jp2=new JPanel();                                                                                        //构造方法,用来构造对象
        jb1=new JButton("北极狐");
        ListenerA A = new ListenerA();   //创建A动作监听器(先看listenerA类)
        jb1.addActionListener(A);        //对按钮jb1应用A监听器(传统方法)
        jb2=new JButton("飞鼠");
        jb3=new JButton("猎豹");
        jb4=new JButton("猫咪");
        jb5=new JButton("松鼠");

        jf=new JFrame("动物照片切换");

        jl=new JLabel();
        //imageicon=new ImageIcon("C:/Users/HP/Desktop/jk/maomi(1).jpg");                //写入图片路径
        //jl=new JLabel(imageicon);
        jp2.add(jl);

        jf.setSize(500, 500);
        jf.setVisible(true);
        init();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }


    public void init() {     //创建init方法,在这里进行jp1,jp2添加到jf方法的操作,稍后只用调用方法即可
        JPanel jp1=new JPanel();    //创建jp,类似jf,稍后将这俩jp添加到jf面板
        JPanel jp2=new JPanel();
        this.jp2=jp2;
        jf.setLayout(new BorderLayout());   //jf应用边界布局管理器
        jp1.setLayout(new FlowLayout());      //jp1当场构建流布局
        jp1.add(jb1);                         //添加按钮jbX至jp1
        jp1.add(jb2);
        jp1.add(jb3);
        jp1.add(jb4);
        jp1.add(jb5);
        jp2.add(jl);

        jf.add(jp1,BorderLayout.SOUTH);        //jf添加jp1时,放置于南边   jp1后是逗号
        jf.add(jp2,BorderLayout.NORTH);
    }



        public class ListenerA implements ActionListener{
                                                                 //该类应用ActionListener接口


        @Override
            public void actionPerformed(ActionEvent e) {            //应用接口:必须实现其抽象方法
                if(e.getSource()==jb1){
                    imageicon=new ImageIcon("C:/Users/HP/Desktop/jk/beijihu.jpg");
                    jl=new JLabel(imageicon);
                    jp2.add(jl);
                }
            }
        }


    public static void main(String[]args){
        FramePractise fp = new FramePractise();
    }
}
  • 写回答

2条回答 默认 最新

  • Roc-xb 领域专家: 后端开发技术领域 2023-10-14 02:13
    关注
    
    package learnProject.csdn;
    
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    
    /**
     * 
     * @author Roc-xb
     *
     */
    public class ImageSwitcher extends JFrame {
        private static final long serialVersionUID = 1L;
        private JLabel imageLabel;
        private JButton button1, button2, button3, button4;
    
        public ImageSwitcher() {
            setTitle("美女Switcher");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(400, 400);
            setLayout(new BorderLayout());
    
            // 创建图片标签
            imageLabel = new JLabel();
            imageLabel.setHorizontalAlignment(JLabel.CENTER);
            add(imageLabel, BorderLayout.CENTER);
    
            // 创建按钮面板
            JPanel buttonPanel = new JPanel();
            buttonPanel.setLayout(new FlowLayout());
    
            // 创建按钮
            button1 = new JButton("美女1");
            button2 = new JButton("美女2");
            button3 = new JButton("美女3");
            button4 = new JButton("美女4");
    
            // 添加按钮点击事件监听器
            button1.addActionListener(new ButtonClickListener());
            button2.addActionListener(new ButtonClickListener());
            button3.addActionListener(new ButtonClickListener());
            button4.addActionListener(new ButtonClickListener());
    
            // 将按钮添加到按钮面板
            buttonPanel.add(button1);
            buttonPanel.add(button2);
            buttonPanel.add(button3);
            buttonPanel.add(button4);
    
            // 将按钮面板添加到窗口底部
            add(buttonPanel, BorderLayout.SOUTH);
    
            // 模拟点击第一个按钮
            button1.doClick();
    
            // 显示窗口
            setVisible(true);
        }
    
        // 按钮点击事件监听器
        class ButtonClickListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                JButton source = (JButton) e.getSource();
                String buttonText = source.getText();
    
                // 根据按钮文本设置对应的图片
                switch (buttonText) {
                case "美女1":
                    imageLabel.setIcon(new ImageIcon("C:\\Users\\Administrator\\Desktop\\sc\\01.jpeg"));
                    break;
                case "美女2":
                    imageLabel.setIcon(new ImageIcon("C:\\Users\\Administrator\\Desktop\\sc\\02.jpeg"));
                    break;
                case "美女3":
                    imageLabel.setIcon(new ImageIcon("C:\\Users\\Administrator\\Desktop\\sc\\03.jpeg"));
                    break;
                case "美女4":
                    imageLabel.setIcon(new ImageIcon("C:\\Users\\Administrator\\Desktop\\sc\\04.jpeg"));
                    break;
                }
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new ImageSwitcher();
                }
            });
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月14日
  • 已采纳回答 10月14日
  • 创建了问题 10月14日