如何在Java中将JLabel转换为按钮?

如何在Java中将JLabel转换为按钮?,java,interface,jbutton,jlabel,Java,Interface,Jbutton,Jlabel,我有一个印有t恤图片的标签。我想让每件t恤都能被点击,然后它会指向另一个窗口。如何在维护图片的同时使每件t恤都有一个纽扣? 这只是我方法的一部分,我想让衬衫变成JButtons。 这是我的密码: final JFrame shirts = new JFrame("T-shirts"); JPanel panel = new JPanel(new GridLayout(4, 4, 3, 3)); for (int i = 1; i < 13; i++) {

我有一个印有t恤图片的标签。我想让每件t恤都能被点击,然后它会指向另一个窗口。如何在维护图片的同时使每件t恤都有一个纽扣? 这只是我方法的一部分,我想让衬衫变成JButtons。 这是我的密码:

final JFrame shirts = new JFrame("T-shirts");

        JPanel panel = new JPanel(new GridLayout(4, 4, 3, 3));

        for (int i = 1; i < 13; i++) {
           l = new JLabel(new ImageIcon("T-shirts/"+i+".jpg"), JLabel.CENTER);
            l.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
            l.setFont(l.getFont().deriveFont(20f));
            panel.add(l);
        }//end of for loop


        shirts.setContentPane(panel);
        shirts.setSize(1000, 1000);
        shirts.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        shirts.setVisible(true);
最终JFrame衬衫=新JFrame(“T恤”);
JPanel面板=新JPanel(新网格布局(4,4,3,3));
对于(int i=1;i<13;i++){
l=新的JLabel(新图像图标(“T-shirts/”+i+“.jpg”)、JLabel.CENTER;
l、 setBordOrder(BorderFactory.createBevelOrder(BevelOrder.RAISED));
l、 setFont(l.getFont().deriveFont(20f));
小组.添加(l);
}//循环结束
衬衫.套装内容窗格(面板);
衬衫.套装尺寸(10001000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
衬衫。可见(真实);

无需更改为JButton。这里最简单的选择是实现MouseListener

这将允许您测试鼠标单击的事件:



更新

这会将标签添加到下一个JFrame


希望这有帮助


让我知道结果:)

一个按钮也可以显示一个图标:谢谢。鼠标听器真的帮了大忙。根据我的代码,您知道如何检测单击了哪个JLabel吗?为此,您需要创建一个JLabel数组列表。从这一点开始,您将完全执行您正在执行的操作,但只需将标签添加到ArrayList,这样您就可以根据标签的名称(由i给出)获取标签来检查它是否是标签1、2、3、4等等。我创建了数组列表,然后将标签添加到数组列表中。如何检查单击了哪个标签?下面是代码,其中l是JLabel:panel.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){//指向您希望它从这里转到的帧选择。添加(l);JFrame size=new JFrame(“Shopping”);size.setVisible(true);size.setSize(500500);size.setLocation(100200);//select.add(l);shirts.dispose();});你能不能快速告诉我为什么你需要知道点击了哪个标签,这样我就知道怎么回答了。谢谢,我想在下一帧中显示在标签中选择的图像。
yourLabelName.addMouseListener(new MouseAdapter()  
{  
    public void mouseClicked(MouseEvent e)  
    {  
       //point to the frame you want it to go to from here
       yourFrame = new JFrame("Next JFrame");
       frame.setVisible(true);

    }  
}); 
shirts.this.add(l);