如何从内部框架访问JFrame中的组件



我创建了java Swing应用程序,它由一个jDesktoppane组成,在它里面,我从主框架(JFrame)的切换按钮加载/调用一些jinternal框架。我已经使用jButton组来切换所有的按钮,所以只有一个帧会当按钮被按下。

因为我使用了切换按钮,即使我处理了一个JInternalFrame,相关的切换按钮将处于按下模式(选中)。我尝试了很多方法,都无法将切换按钮的状态从选中更改为未选中。

首先,我在Main JFrame中创建了一个方法。

public void buttongroup_off(){           
    buttonGroup 1.setSelected(null,false);             
}

然后我在JInternalFrame的exit按钮中创建了一个对象,并通过它调用了buttongroup_off()方法。

private void jButton 7 ActionPerformed(java.awt.event.ActionEvent evt) {         
    Main m1= new Main();                         
    m1.buttongroup_off();                     
    this.dispose();                       
} 

但它不工作!!有人能帮我一下吗?我对编程还是个新手。

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {         
    Main m1= new Main();                         
    m1.buttongroup_off();                     
    this.dispose();                       
} 
在这段代码中,您正在创建一个新的 JFrame Main(创建后是不可见的)并禁用它的按钮组。那不是你想要的。必须使用对现有Main实例的引用来调用buttongroup_off方法。您可以通过扩展JInternalFrame的自定义类的自定义构造函数传递引用,也可以向Main类添加一个静态方法,该方法将返回对Main实例的引用。这样的:
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {         
    Main m1 = Main.getInstance();                         
    m1.buttongroup_off();                     
    this.dispose();                       
} 

你也可以看看这个问题的答案:从子框架管理父框架在java swing

您可以使用如下代码获取JFrame:

Component source = (Component)event.getSource();
Main frame = (Main)SwingUtilities.windowForComponent( source );

现在你有了一个对框架的引用,你可以从你的自定义框架类中调用任何方法

相关内容

  • 没有找到相关文章