2016-07-30 5 views
1

JPanel이 보이지 않도록 설정되면 여전히 "손댈 수 있습니까?" 마찬가지로 내 프레임에 JPanel이 있고 패널에는 버튼이 있습니다. 버튼이 보이면 버튼을 눌렀을 때 패널이 보이지 않도록 설정하면 버튼이 여전히 작동합니까?JPanel 가시성

setVisible 실제로 위에서 언급 한 내용을 달성하지 않으려 고합니다.

+1

왜 직접 테스트하지 않았습니까? – Flown

+0

[Listeners 중 하나가 시인성에 적합한 JPanel]의 가능한 복제본이 변경되었습니다. (http://stackoverflow.com/questions/10880326/jpanel-which-one-of-listeners-is-proper-forvisibility-is- 변경됨) – SkyWalker

+0

@Flown 나는 왜 그런 말을하는지 이해합니다. 몇 번 시도해 보았습니다. 결과를 다시 확인하고 싶었습니다. Marvin Jude의 대답을 통해 패널의 기능이 표시되지 않을 때 패널의 기능을 사용하지 못하게 할 수있었습니다. –

답변

1

@Marvin Jude가 말한 것을 테스트했는지는 알 수 없습니다. 그러나 예를 들어, 부모 컨테이너가 보이지 않을 때 인스턴스는 건드릴 수 없습니다.

  1. JPanel의 가시성을 변경하려면 panel.setVisible(true); 또는 panel.setVisible(true);을 사용하십시오.
  2. MainPanel이 보이지 않으면 단추의 수신기가 트리거되지 않습니다.

아래 코드를 참조하십시오.

import java.awt.BorderLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 

    import javax.swing.*; 

    public class MyFrame extends JFrame{ 

     /** 
     * 
     */ 
     private static final long serialVersionUID = 1L; 

     public MyFrame(){ 
      MainPanel panel = new MainPanel(); 
      add(panel,BorderLayout.CENTER); 
      setResizable(false); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setLocationRelativeTo(null); 
      pack(); 
      panel.setVisible(true); 
     } 

     class MainPanel extends JPanel{ 

      /** 
      * 
      */ 
      private static final long serialVersionUID = 1L; 
      public MainPanel(){ 
       JButton button = new JButton("I am a button"); 
       add(button); 
       button.addActionListener(new ActionListener(){ 

        @Override 
        public void actionPerformed(ActionEvent arg0) { 
         // TODO Auto-generated method stub 
         System.out.println("JButton is clicked..."); 
        } 
       }); 
      } 
     } 

     public static void main(String args[]){ 
      Runnable runnable = new Runnable() { 
       @Override 
       public void run() { 
        MyFrame myFrame = new MyFrame(); 
        myFrame.setVisible(true); 
       } 
      }; 
      SwingUtilities.invokeLater(runnable); 
     } 
    } 
+0

예 테스트 해 보았지만 제대로 작동합니다. 나는 리던던시 척도로서 그를 사용했다. 당신이 말한 것에 관해서는, 이제 어떻게 작동하는지 조금 이해합니다. 고맙습니다! –

2

표시되지 않도록 설정 되어도 작동하지만 기능을 수행하지 않으려면 .Enabled 메소드를 사용하십시오.

+0

감사합니다! 나는 .enabled 메소드를 사용하는 것에 대해 전혀 생각하지 못했습니다! –