Java 从不同类向JPanel添加JButton

Java 从不同类向JPanel添加JButton,java,swing,jpanel,jbutton,Java,Swing,Jpanel,Jbutton,嗨,有没有一种方法可以从不同的类将JButton添加到JPanel中。所以基本上,JPanel是a类的,而JButton是B类的。我怎么能把按钮放在另一个类的面板上呢。希望这是有意义的,如果你需要我澄清,让我知道。提前感谢您的帮助。您可以制作如下内容: public OtherClass { public JButton getButton (){ JButton b = new JButton(); b.set...(); b.set..

嗨,有没有一种方法可以从不同的类将JButton添加到JPanel中。所以基本上,JPanel是a类的,而JButton是B类的。我怎么能把按钮放在另一个类的面板上呢。希望这是有意义的,如果你需要我澄清,让我知道。提前感谢您的帮助。

您可以制作如下内容:

public OtherClass {
    public JButton getButton (){
        JButton b = new JButton();
        b.set...();
        b.set...();
        b.set...();
        b.set...();
        return b;
    }
}
然后可以使用此函数创建始终相同的JButton


另一个选项是将按钮创建为静态并在其他类中使用,这不是一个很好的解决方案,但它可以是一个选项

您需要类a中类B的实例对象来访问其变量和方法。然后,您可以编写如下内容:

public ClassB {
    public JButton getButton() {
       return myJButton;
    }
}
另一种方法是使JButton在类B中是静态的,然而这是一种肮脏的攻击,是一种糟糕的设计模式

public ClassB {
    public static JButton myJButton;
}

然后,您可以使用ClassB从ClassA访问JButton。myJButton

您可以继承类或使用单个类:

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

}
}