2012-01-29 3 views
1

안녕하세요, 저는 프로그램 할 JButton을 사용하고 있기 때문에 새 JLabel이 화면에 표시됩니다. 프레임에 JLabel을 추가했는데이를 볼 수 있습니다. actionPerformed의 바깥쪽에 있지만 내부에는 보이지 않습니다.Java에서 actionPerformed로 JLabel을 생성하십시오.

레이블이 방법 밖에 LBL로 선언 한 후이

public void actionPerformed(ActionEvent e) { 

     JLabel lbl = new JLabel("ONE"); 
} 

누군가가 버튼을 누를 때 나 라벨 표시하게하는 데 도움이 될 수 있습니다 actionPerformed 메소드에서 생성된다? 감사합니다

+0

또한이 [답변] (http://stackoverflow.com/a/9056557/230513)을 참조하십시오. – trashgod

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

1

내부에 actionPerformed 메서드가 선언되었습니다.이 선언은 메서드 외부의 이전 메서드를 숨길 수 있습니다. 더 많은 코드를 게시 할 수 있습니까? 다음 코드는 나를 위해 잘 작동 :

public class NewLabel 
{ 
    public static void main(String[] args) 
    { 

     final JFrame frame = new JFrame(); 

     JButton button = new JButton("Add label"); 

     button.addActionListener(new ActionListener() 
     { 

      public void actionPerformed(ActionEvent e) 
      { 

       JLabel lbl = new JLabel("ONE"); 
       frame.add(lbl); 

       frame.setSize(100, 100); 
       // or you can't see the new button without resizing manually! 
      } 
     }); 

     frame.add(button); 
     frame.pack(); 
     frame.setVisible(true); 

    } 
} 

(경우에 따라도 ... 다시 레이아웃을 위해 그것에) (재 검증 호출하여 컨테이너/프레임을 이야기해야 할 수도 있습니다)

+0

컨테이너가 아닌 프레임을 사용하고 있습니다. 프레임에 해당 코드를 시도했지만 작동하지 않았습니다. – jj007

+0

JFrame _ 컨테이너. 어쨌든 컨테이너의 하위 클래스입니다. JLabel을 추가 한 후 frame.revalidate() 및 frame.repaint()를 호출 해 보았습니까? – DNA

+0

시도해 보았습니다. ( – jj007

3

이를

buttonname.addActionListener(this); 

및 레이아웃 당신의 방법을 수행하는 것을 잊지 마세요

public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == buttonname){ 
     labelname.setVisible(true); 

    } 
} 

을 또한, 상기 방법은 당신이 그것을 할됩니다 양식에 다음을 추가하십시오.

yourPanel.Add(labelname) 

희망이 있습니다.

Arno

1

JLabel을 만들었지 만 다른 컨테이너에 추가하지 않았습니다. 그것이 보여주는 것이 아닙니다. 당신이 쓴 것이 좋습니다, 당신이 필요로하는 것은 그것이있을 것으로 예상되는 컨테이너에 레이블을 추가하는 것입니다.

JLabel lbl = new JLabel("ONE"); 
yourPanel.Add(lbl); 
+0

' revalidate'도 마찬가지입니다. –

관련 문제