Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从内部框架访问JFrame中的组件_Java_Swing_Netbeans_Jinternalframe_Jtogglebutton - Fatal编程技术网

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

Java 如何从内部框架访问JFrame中的组件,java,swing,netbeans,jinternalframe,jtogglebutton,Java,Swing,Netbeans,Jinternalframe,Jtogglebutton,我已经创建了JavaSwing应用程序,其中包含一个jDesktoppane,在它里面我正在从主框架(JFrame)中的切换按钮加载/调用一些内部框架。我使用了jButton组来切换所有的按钮,所以当按下一个按钮时,只有一个帧会切换 由于我使用了切换按钮,即使我配置了JInternalFrame,相关切换按钮仍将处于按下模式(已选择)。我尝试了很多方法,但无法将切换按钮的状态从选中更改为未选中 首先,我在主JFrame中创建了一个方法 public void buttongroup_off(){

我已经创建了JavaSwing应用程序,其中包含一个jDesktoppane,在它里面我正在从主框架(JFrame)中的切换按钮加载/调用一些内部框架。我使用了jButton组来切换所有的按钮,所以当按下一个按钮时,只有一个帧会切换

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

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

public void buttongroup_off(){           
    buttonGroup 1.setSelected(null,false);             
}
然后我在JInternalFrame的exit按钮内创建了一个对象,并通过它调用了buttongroup_off()方法

但是它不起作用!!,有人能帮我吗? 我是编程新手

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

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {         
    Main m1 = Main.getInstance();                         
    m1.buttongroup_off();                     
    this.dispose();                       
} 

您还可以查看以下问题的答案:

您可以使用以下代码获得JFrame:

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

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

我在代码的第1行中收到一个错误,事件就是位置。上面的代码将添加到您的ActionListener中。所以请使用ActionEvent的变量名,我没听清楚。事件的变量名是什么??它被执行了吗??
Component source = (Component)event.getSource();
Main frame = (Main)SwingUtilities.windowForComponent( source );