让JLabel成为另一个JLabel

时间:2012-10-30 22:14:40

标签: image jlabel

所以,这是我的问题。我有一个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();



}

1 个答案:

答案 0 :(得分:0)

me.getSource()返回一个JLabel,它不会返回一个可以赋值的变量。

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

((JLabel)me.getSource())。setIcon(new ImageIcon(bi));

您还需要调用标签或面板updateUI()来强制进行“硬”重绘,并调整大小。