所以,这是我的问题。我有一个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();
}
答案 0 :(得分:0)
me.getSource()返回一个JLabel,它不会返回一个可以赋值的变量。
可能最好的方法不是创建一个新的JLabel,而只是将新的ImageIcon分配给旧的JLabel。
((JLabel)me.getSource())。setIcon(new ImageIcon(bi));
您还需要调用标签或面板updateUI()来强制进行“硬”重绘,并调整大小。