Image 使一个JLabel成为另一个JLabel

Image 使一个JLabel成为另一个JLabel,image,jlabel,Image,Jlabel,所以,这是我的问题。我有一个JPanel,上面有一个JLabel,我想要的是,一旦单击了JLabel,它就应该调整大小(理想情况下,它会随着其规模而改变,但现在我使用的是一个常量值)。我已经返回了图像,现在我可以缩放它了,但是我无法将原来的JLabel变成新尺寸的 所以这是理想情况下应该发生的事情,e.getSource应该成为新增加的JLabel大小 我知道我已经非常接近了,我做了一个JOptionPane作为调试语句,看看是否可以增加大小,我可以 为什么不能((JLabel)me.getSo

所以,这是我的问题。我有一个JPanel,上面有一个JLabel,我想要的是,一旦单击了JLabel,它就应该调整大小(理想情况下,它会随着其规模而改变,但现在我使用的是一个常量值)。我已经返回了图像,现在我可以缩放它了,但是我无法将原来的JLabel变成新尺寸的

所以这是理想情况下应该发生的事情,e.getSource应该成为新增加的JLabel大小

我知道我已经非常接近了,我做了一个JOptionPane作为调试语句,看看是否可以增加大小,我可以

为什么不能((JLabel)me.getSource=a; 我的新JLabel在哪里

无论如何,这是我的代码:

请帮帮我

public void mousePressed(MouseEvent me) {
        //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY());
        //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY)

      JLabel a= (JLabel) me.getSource();
      Icon icon = a.getIcon();

        int scale = 4;

        BufferedImage bi = new BufferedImage(
            scale*icon.getIconWidth(),
            scale*icon.getIconHeight(),
            BufferedImage.TYPE_INT_ARGB);
            Graphics2D g = bi.createGraphics();
            g.scale(scale,scale);
            icon.paintIcon(null,g,0,0);
            g.dispose();
            JLabel temp = new JLabel(new ImageIcon(bi));
            ((JLabel)me.getSource())= temp;

        JOptionPane.showMessageDialog(
            null,
            new JLabel(new ImageIcon(bi)));

      System.out.println("The size of the image is" + b.getIconWidth());
      initiateEvent = me;
        me.consume();



}
getSource()返回一个JLabel,它不返回一个变量,您可以为其赋值

最好的方法可能不是创建新的JLabel,而是将新的ImageIcon分配给旧的JLabel

((JLabel)me.getSource()).setIcon(新图像图标(bi))


您还需要调用label或panel updateUI()来强制进行“硬”重绘并调整大小。

使用语句
((JLabel)me.getSource())=temp;
?表达式(例如
((JLabel)me.getSource())
)不允许位于=。您很可能需要获取事件源的父级,删除现有标签,然后添加新标签。