当前位置: 首页 > 知识库问答 >
问题:

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

左丘曦
2023-03-14

我已经创建了JavaSwing应用程序,其中包含一个jDesktoppane,在它里面我正在从主框架(JFrame)中的切换按钮加载/调用一些内部框架。我使用了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();                       
} 

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

共有2个答案

夏侯航
2023-03-14

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

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

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

闻人思聪
2023-03-14
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();                       
} 

您还可以看看这个问题的答案:在JavaSwing上从子框架管理父框架

 类似资料:
  • 我正在做一个GUI任务,我遇到了一个我无法解决的问题。我有一个带有多个JPanels的JFrame,其中一个JPanels包含一个带有多个JPanels的CardLayout。由于我们有更多的人在这个项目中工作,我们决定为CardLayout中的每个面板创建一个单独的类(扩展JPanel)。 问题是从JPanel类访问JFrame的组件。 举个例子,我在JFrame中的某个地方有一个JLabel,

  • 我正在使用和。 我想锁定JDesktopPane内部的内部框架。 建议需要更改的方法或属性。

  • 问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:

  • 如何从AWS Lambda函数中读取Dynamodb记录? 我正试图通过以下方式调用get_item: 但是,当我通过Lambda测试工具运行测试时,它失败并出现错误: 尽管文档说get_item应该返回包含字典的对象,但它实际上返回: 为什么没有提供项目?如何从Dynamo检索记录?

  • 是否可以在JavaFX中制作相同的内部帧?

  • 本文向大家介绍MongoDB中如何访问JSON数组的内部元素,包括了MongoDB中如何访问JSON数组的内部元素的使用技巧和注意事项,需要的朋友参考一下 要在MongoDB中访问JSON数组的内部元素,请使用点表示法。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是访问JSON数组内部元素的查询- 这将产生以下输出-