簡體   English   中英

Java中另一種方法中的訪問實例變量

[英]Access Instance Variables in Another Method in Java

我正在用Java編寫GUI。 一種方法初始化並顯示一個表單:

public class launchQMBPMN extends CytoscapeAction {
  private JComboBox termDB;

  public launchQMBPMN(QMBPMN SaddleSum) {
    super("SaddleSum");
    setPreferredMenu("Plugins");


  }

  public class buttonListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
      JFrame hello = new JFrame();
      JLabel test = new JLabel(termDB.getSelectedItem());
      test.add(hello);
      hello.show();
    }
  }
  public void actionPerformed(ActionEvent e) {
    CytoscapeDesktop desktop = Cytoscape.getDesktop();

    InteractionTools tools = new InteractionTools();

    GridBagConstraints c = new GridBagConstraints();
    c.anchor = GridBagConstraints.LINE_START;
    c.weightx = 0.5;

    buttonListener buttonPressed = new buttonListener();

    // TERM DATABASE AND WEIGHTS

    JPanel qmbpTermsPanel = new JPanel(new GridBagLayout());

    termDB = new JComboBox(tools.discoverTermDatabases());
    c.gridx = 1;
    c.gridy = 0;
    qmbpTermsPanel.add(termDB, c);  


                ...

我想在我的buttonListner類中訪問'termDB'。 我怎么做?

只需使用它的名稱訪問它,它就應該在外部類內部工作。

另請參見: http : //download.oracle.com/javase/tutorial/java/javaOO/innerclasses.html

按照您在此處發布的內容進行訪問。 一些評論:

  1. 不推薦使用JFrame show方法(實際上是java.awt.Window show方法),請使用setVisible(true); 代替。

  2. 我不確定test.add(hello); 是您真正需要的。 是嗎? 它將框架添加到標簽。

  3. termDB.getSelectedItem()返回一個ObjectJLabel構造函數需要一個字符串: termDB.getSelectedItem().toString()嗎?

您可以創建ButtonListener的子類,並在創建時將termDB傳遞給它,或者進行其他設置。

或者,您可以在需要按鈕偵聽器的地方定義一個匿名內部類,並使termDB為final,它將在您的ButtonListener實現中可用。 或者,您可以像我介紹的第一個選項一樣,將termDB引用傳遞給匿名內部類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM