我创建了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 );
现在你有了一个对框架的引用,你可以从你的自定义框架类中调用任何方法