簡體   English   中英

如何將項目添加到netbeans中另一個類的列表框中

[英]how to add items to a list box from another class in netbeans

我想在一個jframe的列表框中添加元素,來自不同的類但是無論我嘗試什么它似乎都不起作用...我沒有得到錯誤或任何關於這個錯誤的反饋..但是繼承我的布局,列表框正在使用DefaultListModel lm2

我知道如何將元素添加到jframe類的jList中,但是由於某些原因,即使將其添加到jframe類中,我也無法添加其他類的元素:

  public void log(String str) {
      lm2.addElement(str);
    }

在我的“其他班級”上

  frmMain doit = new frmMain();

  doit.log("add to list box");

更多詳細信息添加-->

我有3節課,所有這些都是:

frmMain.class

     // My main class which sets the jFrame to visible
  public class RS232Example {
      public static void main(String[] args) throws Exception {


        frmMain form = new frmMain();
        form.setVisible(true);

    }

  }

RequestInfo.class

 // RequestInfo.class, which is trying to add an item to the // jlist but it doesn't add anything or error public class RequestInfo { public void ProcessReturnedInfo(String sData, boolean bWithLabel) { frmMain fm = new frmMain(); fm.log("test test"); } 

RS232Example.class

  // My main class which sets the jFrame to visible public class RS232Example { public static void main(String[] args) throws Exception { frmMain form = new frmMain(); form.setVisible(true); } } 

我理解也許我需要在RequestInfo.class上將表單設置為可見,但是我不能這樣做,因為它將連續多次打開表單,因為這個類方法被多次從事件中調用...

如果您的listBox-model設置正確(例如listBox.setModel(this.lm2); ),我想以下應該可以工作:

public static void main(String[] args) throws Exception {
  frmMain form = new frmMain();
  form.setVisible(true);
  form.log("Hallo");
}

如果您想知道為什么這行得通,而RequestInfo中的代碼卻不行,請記住,您為每個ProcessReturnedInfo調用創建了一個新的frmMain及其自身的listModel。

如果只想更新一個框架,請嘗試將該框架用作單例:

frmMain的構造函數從public更改為private並將其添加到類中:

private static frmMain instance = null;

public static frmMain getInstance() {
  if (instance == null) {
    instance = new frmMain();
  }
  return instance;
}

現在必須在RequestInfoRS232Example使用frmMain.getInstance() ,而不是調用new frmMain()

這樣,您將始終在同一幀上工作。

祝好運。

你的其他課程是什么? 我假設frmMain()創建了一個帶有JListJFrame ,但是除非該JFrameJList ,否則您將看不到它。 我懷疑-我可能錯了-您有多個JFrame實例,並且該字符串正在添加到一個不可見的字符串中。

對不起,我病了一段時間,但我相信Andreas L對您的問題有正確的答案。 您不一定需要靜態框架對象,但這是最簡單的方法。 如果您正在處理多個線程,您可能仍然會遇到問題,在這種情況下,您將需要控制請求處理的方法,排隊尚未完成處理的數據等。

祝好運。

暫無
暫無

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

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