0

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



}
4

1 回答 1

0

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

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

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

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

于 2012-10-30T22:30:45.337 回答