Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向JList添加值_Java - Fatal编程技术网

Java 向JList添加值

Java 向JList添加值,java,Java,我有两个类,一个视图中所有控件都放在gui中,另一个视图放在代码中 但是如何向JList添加值呢?我只能从GUI类(下面提到的第一个类)本身来做,但这不是一个合适的位置 头等舱 第二类(保存所有未来的计算、数组等) 私有字符串[]测试列表; DefaultListModel数据=新的DefaultListModel(); public void AddValuesList() { testList=新字符串[]{“user1”,“user2”}; for(int i=0;i

我有两个类,一个视图中所有控件都放在gui中,另一个视图放在代码中

但是如何向
JList
添加值呢?我只能从GUI类(下面提到的第一个类)本身来做,但这不是一个合适的位置

头等舱 第二类(保存所有未来的计算、数组等)
私有字符串[]测试列表;
DefaultListModel数据=新的DefaultListModel();
public void AddValuesList()
{
testList=新字符串[]{“user1”,“user2”};
for(int i=0;i
真正做到这一点的唯一方法是如何布局。在第二个类中,为列表模型添加一个getter(例如,
DefaultListModel
),使用该模型创建
JList
(或在创建
JList
后设置),然后将值添加到列表模型中。从您的示例来看,您唯一缺少的是在
JList
上设置列表模型。完成后,您的JList将获取您添加的值

所以它会是这样的(抱歉格式化…):

类测试模型{
私有DefaultListModel lm;
公共测试模型(){
lm_u3;=新的DefaultListModel();
String[]testList=新字符串[]{“user1”、“user2”};
for(int i=0;i
这里的问题到底是什么?JList是一个GUI项目,但ListModel是它的模型,因此您似乎应该能够使这两个方法进行适当的交互-根据需要添加帮助器方法。如果我保留在一个文件中,我可以从数组中完美地添加值,但它们必须在两个文件中分开,并且不确定为什么我的数据不能“填充”到数据中。我现在只收到了一份blanco JList。为写得好的输入干杯。虽然ListModel来自哪里,但我一直在尝试类似的事情,但无法返回lm。获取错误数据模型必须为非null。听起来在调用列表模型的getter之前,您并不是新创建列表模型的。只是为了确保,在模型类的构造函数中,创建列表模型,并确保不再声明列表模型(在构造函数中创建与成员列表模型同名的局部变量)。这有意义吗?如果没有,可以发布您的确切代码(或包含类声明的缩小版本)。在我的第一个类中,Jlist只声明一次为private。然后它被这样调用:userList=newjlist(ce.getListModel());。但我不太明白的是,从getListModel方法中从哪里获得ListModel?平民的getListmodel(),其中。。。这就是我无知的地方。RegardsOh,那么您要做的就是在第二个类中,声明一个类型为
DefaultListModel
(实现
ListModel
)的成员变量,在构造函数中新建该成员变量(或在声明时)。将值设置到列表模型中,然后在getter中返回该值。因此,在我上面发布的代码(在TestModel中)中,lm_u就是我所指的。因此,在getListModel中,可以有一个返回类型DefaultListModel或它的接口ListModel。我通常执行最高级别的操作(在本例中为ListModel),因此如果以后需要将其替换掉,则不必更改API。更清楚吗?顺便说一句,您仍然可以在lm_uu中设置或删除值;您不必在返回列表模型之前添加它们。JList将接收更改。
private JList userList;
userList = new JList(ce.data); // where data is the datalist model in my 2nd class
private String[] testList;
DefaultListModel data = new DefaultListModel();

public void AddValuesList()
{
    testList = new String[] {"user1", "user2"};

    for (int i=0; i < testList.length; i++)
    {
        this.data.add(i, testLijst[i]);
    }
}
class TestModel {

private DefaultListModel lm_;

  public TestModel() {
    lm_ = new DefaultListModel();

    String[] testList = new String[] {"user1", "user2"};

    for(int i=0; i < testList.length; i++) {
      lm_.add(i, testList[i]);
    }
  }

  public ListModel getListModel() {
    return lm_;
  }
}

public class Test {

  public Test() {

    TestModel tm = new TestModel();

    JList list = new JList(tm.getListModel());
  }
}