2015-02-17 5 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 в классе А для доступа к своим переменным и методам. Вы могли бы написать что-то вроде следующего:

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

Другой способ сделать это, чтобы сделать JButton статическим в классе B, однако это грязный хак, что это плохой шаблон дизайна.

public ClassB { 
    public static JButton myJButton; 
} 

Вы могли бы получить доступ к JButton из ClassA с помощью ClassB.myJButton

0

Вы можете Наследовать классы или использовать один один:

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; 
} 

} 

}

Смежные вопросы