java - 如何将项目从netbeans中的另一个类添加到列表框

标签 java class netbeans listbox

我想将来自不同类的元素添加到 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;
}

现在您必须在 RequestInfoRS232Example 中使用 frmMain.getInstance(),而不是调用 new frmMain() >

这就是您始终在同一框架上工作的方式。

祝你好运。

关于java - 如何将项目从netbeans中的另一个类添加到列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326662/

相关文章:

java - Sharedpreferences 保存后返回空值

Java:用空值反序列化一个json数组

java - ejb j2ee 中的持久上下文范围和其他问题

python - 如何使用给定的装饰器获取python类的所有方法

java - Java 中的静态类有什么用?

java - 如何在主 JFrame 表单的开头显示 JDialog?

java - 为什么我的输出没有 () 围绕重复数字以及为什么它不起作用?

java - Android动画的简单线程问题

ruby-on-rails - 类(class)开头的 '::' 如何影响范围 (ruby/rails)?

java - 频繁的 Netbeans 卡住