2012-04-25 62 views

回答

0

如果式2繼承了大型機然後做到這一點:

Frame2.getParent().getBackground(); 
0

有這樣的問題,多種解決方案。這真的取決於什麼最適合你的用例。

在下面的示例中,我使用接口從Frame2MainFrame發出回調。我認爲後者是MainFrame的成員。這種解決方案使您可以輕鬆地在MainFrame(對多個幀的常見搜索)的多個實現中使用相同的Frame2實現。

請注意,下面的代碼只是演示正在使用的模式的骨架代碼。

public class Frame2 extends JFrame { 

    private final Controller controller; 
    private JButton button; 

    public Frame2(Controller controller) { 
     this.controller = controller; 
     button = new JButton("Search"); 
     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       // do search and create result object 
       Object results = new Object(); 
       Frame2.this.controller.displaySearchResults(results); 
      } 
     }); 
    } 

    public interface Controller { 
     // users implement this 
     public void displaySearchResults(Object results); 
    } 
} 
public class MainFrame extends JFrame { 

    private Frame2 search; 
    private JButton button; 

    public MainFrame() { 
     search = new Frame2(new ControllerImplementation()); 
     button = new JButton("Show search"); 
     button.addActionListener(new ShowSearch()); 
    } 

    private class ShowSearch implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      search.setVisible(true); 
     } 
    } 

    private class ControllerImplementation implements Frame2.Controller { 
     public void displaySearchResults(Object results) { 
      // display results by accessing members of MainFrame 
     } 

    } 
} 

這可能會幫助你實現你想要的。

+0

謝謝,它解決了! – 2012-04-29 07:00:51

+0

@Boon DerMaster很高興聽到這個消息。如果此答案回答了您的問題,則應將其標記爲已回答。 – predi 2012-04-30 08:02:12