了解组件、Java Swing中的说明

了解组件、Java Swing中的说明,java,swing,jpanel,Java,Swing,Jpanel,我对使用javax.swing和java.awt比较陌生,所以如果我笨拙地表达我的问题,请容忍我 假设我有一个定制类CustomClass,它扩展并创建了一个JPanelp。在类中,我添加了一个按钮b到p。稍后在另一个程序文件中,我创建了一个名为cp的CustomClass实例,并希望能够使用“actionPerformed”方法捕获b中的点击事件。我的问题是,我如何从实例cp中“到达”(如到)JButtonb的书面路径?(假设所有相关类文件都已关联)如果理解正确,请使用getter和sette

我对使用javax.swing和java.awt比较陌生,所以如果我笨拙地表达我的问题,请容忍我


假设我有一个定制类CustomClass,它扩展并创建了一个JPanelp。在类中,我添加了一个按钮bp。稍后在另一个程序文件中,我创建了一个名为cp的CustomClass实例,并希望能够使用“actionPerformed”方法捕获b中的点击事件。我的问题是,我如何从实例cp中“到达”(如到)JButtonb的书面路径?(假设所有相关类文件都已关联)

如果理解正确,请使用getter和setter。一、 e您的
customPanel
将有一个
public
getButton()
方法,该方法将返回
JButton
实例:

class CustomPanel extends JPanel {
    JButton button=new JButton("Some button");

    public JButton getMyButton() {
        return button;
    }
}

class Test {
    CustomPanel cp=new CustomPanel();


    void someMethod() {
       JButton b= cp.getMyButton();
    }
}
更新

根据评论:

如果我的JPanel中有10个或20个不同的组件,是什么 有一些方法可以到达他们那里,而不需要做很多方法

只需调用
JPanel
实例,然后使用
for循环进行迭代
,这将允许您访问
JPanel
上的所有组件:

CustomPanel cp=...;//this class extends jpanel


for(int i=0;i<cp.getComponentCount();i++) {
    Component c=cp.getComponentAt(i);
     if( c instanceof JButton) {
         //do something
    }
 }
CustomPanel cp=//这个类扩展了jpanel

对于(int i=0;i如果我理解正确,请使用getter和setter。例如,您的
customPanel
将有一个
public
getButton()
方法,该方法将返回
JButton
实例:

class CustomPanel extends JPanel {
    JButton button=new JButton("Some button");

    public JButton getMyButton() {
        return button;
    }
}

class Test {
    CustomPanel cp=new CustomPanel();


    void someMethod() {
       JButton b= cp.getMyButton();
    }
}
更新

根据评论:

如果我的JPanel中有10个或20个不同的组件,是什么 有一些方法可以到达他们那里,而不需要做很多方法

只需调用
JPanel
实例,然后使用
for循环进行迭代
,这将允许您访问
JPanel
上的所有组件:

CustomPanel cp=...;//this class extends jpanel


for(int i=0;i<cp.getComponentCount();i++) {
    Component c=cp.getComponentAt(i);
     if( c instanceof JButton) {
         //do something
    }
 }
CustomPanel cp=…;//此类扩展了jpanel

对于(int i=0;我感谢你的回答!这是一个有效的解决问题的方法,但我的想法是:如果我在我的JPanel中有10或20个不同的组件,有没有什么方法可以在不使用很多方法的情况下访问它们?按钮只是一个有一些组件的示例,没有必要为它创建新的类。@user1967984是的,我知道我读起来像我的***。对不起。根据你之前的评论,请参阅更新post@David谢谢你的帮助,但是…:D“实例”操作员只能告诉我组件是否是与我正在查找的对象相同的类的实例。如果我有两个或多个对象应属于同一类,但被视为单独的对象,我如何使用您提供的循环来区分它们?谢谢您的回答!这是解决此问题的有效方法声明,但我想的是:如果我在我的JPanel中有10或20个不同的组件,有没有什么方法可以在不使用很多方法的情况下访问它们?按钮只是一个有一些组件的示例,没有必要为它创建新类。@user1967984是的,我看到我读起来像我的***。对不起。根据你之前的评论见更新post@David谢谢你的帮助,但是…:D“实例”操作员只能告诉我组件是否是与我正在查找的对象相同的类的实例。如果我有两个或多个对象应该属于同一类,但被视为单独的对象,我如何使用您提供给我的循环来区分它们?不要扩展面板。只使用实例。不要扩展面板。只有我们举例说明。