从不同的类添加JButton到JPanel

时间:2015-02-17 22:52:38

标签: java swing jpanel jbutton

您有没有办法从不同的类添加JButton到JPanel。所以基本上JPanel在Class A中并且JButton在Class B中如何将按钮放在Panel上,该按钮位于不同的类中。希望如果您需要我澄清让我知道,这是有道理的。感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

你可以做这样的事情:

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

然后你可以使用这个函数来创建一个总是相同的JButton。

另一种选择是将Button设置为静态并在OtherClass中使用它,这不是一个很好的解决方案,但它可以是一个选项

答案 1 :(得分:0)

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

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

另一种方法是在类B中使JButton静态,但这是一个糟糕的设计模式。

public ClassB {
    public static JButton myJButton;
}

然后,您可以使用ClassB.myJButton

从ClassA访问JButton

答案 2 :(得分: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;
}

}

}