[英]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;
}
現在必須在RequestInfo
和RS232Example
使用frmMain.getInstance()
,而不是調用new frmMain()
這樣,您將始終在同一幀上工作。
祝好運。
你的其他課程是什么? 我假設frmMain()
創建了一個帶有JList
的JFrame
,但是除非該JFrame
也JList
,否則您將看不到它。 我懷疑-我可能錯了-您有多個JFrame
實例,並且該字符串正在添加到一個不可見的字符串中。
對不起,我病了一段時間,但我相信Andreas L對您的問題有正確的答案。 您不一定需要靜態框架對象,但這是最簡單的方法。 如果您正在處理多個線程,您可能仍然會遇到問題,在這種情況下,您將需要控制請求處理的方法,排隊尚未完成處理的數據等。
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.