【问题标题】:How to access components in a JFrame from an Internal frame如何从内部框架访问 JFrame 中的组件
【发布时间】:2015-12-05 10:47:08
【问题描述】:

我创建了由 jDesktoppane 组成的 java Swing 应用程序,在其中我从主框架 (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();                       
} 

但它不起作用!!,有人可以帮助我吗? 我对编程很陌生。

【问题讨论】:

    标签: java swing netbeans jinternalframe jtogglebutton


    【解决方案1】:
    private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {         
        Main m1= new Main();                         
        m1.buttongroup_off();                     
        this.dispose();                       
    } 
    

    在此代码中,您将创建一个 new 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();                       
    } 
    

    你也可以看看这个问题的答案:managing parent frame from child frame on java swing

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我在代码的第一行遇到错误,event 就是这个地方。
      • 上面的代码添加到你的ActionListener中。因此,请使用您用于 ActionEvent 的变量名称。
      • 我没听懂你。事件的变量名是什么?是actionPerformed吗??
      猜你喜欢
      • 2013-08-24
      • 2023-03-15
      • 2014-02-04
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      相关资源
      最近更新 更多