2012-10-30 2 views
0

그래서 여기에 제 문제가 있습니다. JLabel이있는 JPanel을 가지고 있는데, 원하는 것은 JLabel을 클릭 한 후에 크기를 조정해야한다는 것입니다 (이상적으로는 배율로 변경되지만 이상적으로는 상수 값을 사용합니다). 이미지를 반환 했으므로 크기를 조절할 수있게되었지만 원래 JLabel을 새로 크기 조정할 수 없습니다.JLabel을 다른 JLabel로 만들기

이렇게 이상적으로 일어나야 할 일은 e.getSource가 새로 증가 된 JLabel이되어야한다는 것입니다.

나는 꽤 가깝다는 것을 안다. JOptionPane을 디버그 문으로 사용하여 크기를 늘릴 수 있는지 확인했다.

캔트 ((JLabel의) me.getSource = A 왜, 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

'((JLabel) me.getSource()) = temp; '문장으로 무엇을 달성하려고합니까? 표현식 (예 :'((JLabel) me.getSource())')은 =의 왼쪽에 허용되지 않습니다. 이벤트 소스의 상위 항목을 가져와 기존 라벨을 제거하고 새 라벨을 추가해야 할 가능성이 높습니다. – Zoe

답변

0

me.getSource()는 JLabel을 반환하지만 새로운 값을 할당 할 수있는 변수는 반환하지 않습니다.

아마 가장 좋은 방법은 새 JLabel을 만드는 것이 아니라 n ImageIcon을 이전 JLabel로 가져옵니다.

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

크기를 조정하면서 "단단한"다시 그리기를 강제하려면 label 또는 panel updateUI()를 호출해야합니다.

관련 문제