繁体   English   中英

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

[英]How to access components in a JFrame from an Internal frame

我创建了一个Java Swing应用程序,其中包含一个jDesktoppane,在其中,我正在从主框架(JFrame)中的切换按钮加载/调用一些jinternal框架。 而且我对所有切换按钮都使用了jButton组,因此按下按钮时只有一帧。

由于我使用了切换按钮,因此即使我放置了JInternalFrame,相关的切换按钮也将处于按下模式(已选择)。 我尝试了很多方法,无法将切换按钮的状态从“选择”更改为“未选择”。

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

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

然后,我在JInternalFrame的退出按钮内创建了一个对象,并通过该对象调用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 );

现在您已经有了对框架的引用,您可以从自定义框架类中调用任何方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM