簡體   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