【发布时间】:2012-10-31 06:30:45
【问题描述】:
所以,这是我的问题。我有一个 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();
}
【问题讨论】:
-
您想通过
((JLabel)me.getSource())= temp;语句实现什么目标? = 的左侧不允许使用表达式(例如((JLabel)me.getSource()))。您很可能需要获取事件源的父级,删除现有标签,然后添加新标签。