我想将来自不同类的元素添加到 jframe 上的列表框中,但是无论我尝试什么,它似乎都不起作用...我没有收到错误或任何有关问题的反馈这...但这是我的布局,列表框正在使用 DefaultListModel lm2
我知道如何向 jframe 类中的 jList 添加元素,但由于某种原因,即使在 jframe 类中添加它,我也无法从另一个类添加元素:
public void log(String str) {
lm2.addElement(str);
}
以及我的“其他类(class)”
frmMain doit = new frmMain();
doit.log("add to list box");
#
更多详细信息添加- --->
#我有 3 个类(class),它们都在这里:
frmMain.class
// jFrame class which builds the jframe (from jframe template)
public class frmMain extends javax.swing.JFrame {
/** Creates new form frmMain */
public frmMain() {
initComponents();
}
public void log(String str) {
lm2.addElement(str);
}
public DefaultListModel lm2 = new DefaultListModel();
}
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()
>
这就是您始终在同一框架上工作的方式。
祝你好运。
关于java - 如何将项目从netbeans中的另一个类添加到列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326662/