Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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填充JScrollPane_Java_Swing_Jframe_Jscrollpane_Jlist - Fatal编程技术网

Java 摆动用JList填充JScrollPane

Java 摆动用JList填充JScrollPane,java,swing,jframe,jscrollpane,jlist,Java,Swing,Jframe,Jscrollpane,Jlist,我正在做一个窗口应用程序。我需要创建一个JScrollPane,然后用字符串[]填充它。问题是我需要刷新它 当我启动应用程序时,我想要一个空的JScrollPane,当我按下任何按钮时,该按钮将刷新JScrollPane 我有所有的代码,我只需要刷新内容: // Empty JScrollPane scrollPaneDic = new JScrollPane(new JList()); scrollPaneDic.setBounds(225, 75, 200, 170)

我正在做一个窗口应用程序。我需要创建一个JScrollPane,然后用字符串[]填充它。问题是我需要刷新它

当我启动应用程序时,我想要一个空的JScrollPane,当我按下任何按钮时,该按钮将刷新JScrollPane

我有所有的代码,我只需要刷新内容:

    // Empty JScrollPane
    scrollPaneDic = new JScrollPane(new JList());
    scrollPaneDic.setBounds(225, 75, 200, 170);

    // Layout
    frame.getContentPane().setLayout(null);
    frame.getContentPane().add(lblPalabrasDiccionario);
    frame.getContentPane().add(scrollPaneDic);
    String[] newContent = (method generate and return the new array);
    listDic = new JList(newContent);
    scrollPaneDic = new JScrollPane(listDic);
在按钮actionListener中,我必须刷新内容:

    // Empty JScrollPane
    scrollPaneDic = new JScrollPane(new JList());
    scrollPaneDic.setBounds(225, 75, 200, 170);

    // Layout
    frame.getContentPane().setLayout(null);
    frame.getContentPane().add(lblPalabrasDiccionario);
    frame.getContentPane().add(scrollPaneDic);
    String[] newContent = (method generate and return the new array);
    listDic = new JList(newContent);
    scrollPaneDic = new JScrollPane(listDic);
重要:scrollPaneDic和listDic是全球性的


感谢

更改变量的值不会以任何方式影响组件的状态;必须调用组件方法。在此之前,您的框架无法知道您创建了一个新的JScrollPane

实际上,您不应该创建新的JScrollPane或新的JList。相反,您应该更新现有的JList:

JList listDic = (JList) scrollPaneDic.getViewport().getView();
listDic.setListData(newContent);

另外,强烈建议不要使用null布局,尤其是对于JScrollPane。在运行应用程序之前,尝试调整窗口的大小,或者尝试更改系统字体的大小,您将看到原因。并不是每个用户的系统都像你的。

看看谢谢。这就是我需要的。