2015-02-17 57 views
1

嗨有沒有辦法從不同的類添加JButton到JPanel。所以基本上JPanel在Class A和JButton在Class B我怎麼能把按鈕放在不同類的面板上。希望這是有道理的,如果你需要我澄清讓我知道。我在這裏先向您的幫助表示感謝。將JButton添加到來自不同類的JPanel

回答

0

你可以讓這樣的事情:

public OtherClass { 
    public JButton getButton(){ 
     JButton b = new JButton(); 
     b.set...(); 
     b.set...(); 
     b.set...(); 
     b.set...(); 
     return b; 
    } 
} 

然後你就可以使用這個功能來創建了一個JButton這始終是相同的。

另一種選擇是創建按鈕爲靜態,並在您OtherClass使用它,這不是一個很好的解決方案,但它可以是一種選擇

0

您需要B類的實例對象A類訪問其變量和方法。然後,您可以編寫類似以下內容:

public ClassB { 
    public JButton getButton() { 
     return myJButton; 
    } 
} 

另一種方式來做到這一點是讓JButton的B類靜態的,但是這是一個骯髒的黑客是一個不好的設計模式。

public ClassB { 
    public static JButton myJButton; 
} 

然後,您可以通過使用ClassB.myJButton

0

可以繼承類或者使用一個單一的一個訪問來自ClassA的將JButton:

public class Example{ 

public static void main(String []args){ 

    JFrame wnd = new JFrame(); 
    //edit your frame... 
    //... 
    wnd.setContentPane(new CustomPanel()); //Panel from your class 
    wnd.getContentPane().add(new CustomButton()); //Button from another class 

    //Or this way: 

    wnd.setContenPane(new Items().CustomPanel()); 
    wnd.getContentPane().add(new Items().CustomButton()); 

} 

static class CustomButton extends JButton{ 

    public CustomButton(){ 
    //Implementation... 
    setSize(...); 
    setBackground(...); 
    addActionListener(new ActionListener(){ 
    //.... 
    }); 
    } 

} 

static class CustomPanel extends JPanel{ 

    public CustomPanel(){ 
    //Implementation... 
    setSize(...); 
    setBackground(...); 
    OtherStuff 
    //.... 
    } 

} 

static class Items{ 

public JButton CustomButton(){ 
JButton button = new JButton(); 
//Edit your button... 
return button; 
} 

public JPanel CustomPanel(){ 
JPanel panel = new JPanel(); 
//Edit your panel... 
return panel; 
} 

} 

}