Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 使用AddElement更改DefaultListModel时,不显示JList_Java_Swing_Jscrollpane_Jlist_Defaultlistmodel - Fatal编程技术网

Java 使用AddElement更改DefaultListModel时,不显示JList

Java 使用AddElement更改DefaultListModel时,不显示JList,java,swing,jscrollpane,jlist,defaultlistmodel,Java,Swing,Jscrollpane,Jlist,Defaultlistmodel,我正在为一门组件设计课程实施一项计划,目前正在努力解决如何简单使用Jlist的问题。该程序绘制形状,并应在边框布局的滚动窗格中的JList中显示它们 当前程序显示滚动窗格,但不会像它应该显示的那样显示我添加到shapeListModel的对象。我想知道我是否遗漏了什么,或者我的代码是否出了问题。目前,这是所有参与JList创建、分配和更新的代码 //Class Variable Declaration protected ArrayList<Shape> shapes = n

我正在为一门组件设计课程实施一项计划,目前正在努力解决如何简单使用Jlist的问题。该程序绘制形状,并应在边框布局的滚动窗格中的JList中显示它们

当前程序显示滚动窗格,但不会像它应该显示的那样显示我添加到shapeListModel的对象。我想知道我是否遗漏了什么,或者我的代码是否出了问题。目前,这是所有参与JList创建、分配和更新的代码

    //Class Variable Declaration
protected ArrayList<Shape> shapes = new ArrayList<Shape>();
private JScrollPane shapeScrollPane = new JScrollPane();
private JList<String> shapeList;
protected DefaultListModel<String> shapeListModel;

    //Creation of JList objects and what not
shapeListModel = new DefaultListModel<String>();

    //This element is added aimply to try and get one to show up on my JList, 
shapeListModel.addElement("SERIOUSLY FRUSTRATED"); 
    //It does not just so you know

shapeList = new JList<String>(shapeListModel);
shapeList.setModel(shapeListModel);

    //Adding JList to ScrollPane and setting size
shapeScrollPane.add(shapeList);
shapeScrollPane.setPreferredSize(new Dimension(250,600));

//Clarifying JList actions  
shapeList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
shapeList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
shapeList.setVisibleRowCount(-1);
shapeList.addListSelectionListener(this);**

    //This is called everytime a new shape is created and adds it to the Arraylist
    //shapes and the DefaultListModel shapeListModel
shapes.add(newShape);
shapeListModel.addElement(newShape.toString());
//类变量声明
受保护的ArrayList形状=新建ArrayList();
私有JScrollPane shapeScrollPane=新JScrollPane();
私人设计师;
受保护的DefaultListModel shapeListModel;
//创建JList对象以及其他不创建的对象
shapeListModel=新的DefaultListModel();
//添加此元素是为了尝试在我的JList上显示一个,
shapeListModel.addElement(“严重受挫”);
//这不仅仅是你知道的
shapeList=新JList(shapeListModel);
setModel(shapeListModel);
//将JList添加到滚动窗格并设置大小
shapeScrollPane.add(shapeList);
shapeScrollPane.setPreferredSize(新尺寸(250600));
//澄清联合国行动
shapeList.setSelectionMode(ListSelectionModel.SINGLE\u INTERVAL\u SELECTION);
shapeList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
shapeList.setVisibleRowCount(-1);
shapeList.addListSelectionListener(此)**
//每次创建一个新形状并将其添加到Arraylist中时,都会调用此函数
//形状和DefaultListModel shapeListModel
形状。添加(新闻形状);
shapeListModel.addElement(newShape.toString());
我为我刚才提出的格式错误的问题道歉。我已经在这上面呆了大约4个小时,最后两个小时是在网上搜索答案。我现在询问任何人,他们是否在我的代码中看到问题

您不会在滚动窗格中“添加”组件。您需要将其设置为“视口”视图

不要这样做

shapeScrollPane.add(shapeList);
做这个

shapeScrollPane.setViewportView(shapeList);
退房

另外,这个
shapeList.setVisibleRowCount(-1)
让我非常害怕

已更新

你也不需要这么做

shapeList = new JList<String>(shapeListModel);
shapeList.setModel(shapeListModel);
shapeList=newjlist(shapeListModel);
setModel(shapeListModel);
这就足够了

shapeList = new JList<String>(shapeListModel);
shapeList=newjlist(shapeListModel);
已更新

此外,如果这是以前封闭式问题中使用的相同代码

这个
canvas.getGraphics()
让我害怕!!如果你的导师给了你这个代码,那么他们不应该教你

您不会在滚动窗格中“添加”组件。您需要将其设置为“视口”视图

不要这样做

shapeScrollPane.add(shapeList);
做这个

shapeScrollPane.setViewportView(shapeList);
退房

另外,这个
shapeList.setVisibleRowCount(-1)
让我非常害怕

已更新

你也不需要这么做

shapeList = new JList<String>(shapeListModel);
shapeList.setModel(shapeListModel);
shapeList=newjlist(shapeListModel);
setModel(shapeListModel);
这就足够了

shapeList = new JList<String>(shapeListModel);
shapeList=newjlist(shapeListModel);
已更新

此外,如果这是以前封闭式问题中使用的相同代码


这个
canvas.getGraphics()
让我害怕!!如果你的导师给了你这个代码,那么他们不应该教你

我怀疑
shapeList.setVisibleRowCount(-1)可能是问题的一部分..为了更快地获得更好的帮助,请发布一个.shapeList.setVisibleRowCount(-1)可能是问题的一部分..要更快获得更好的帮助,请发布一个。感谢您的帮助。我会考虑所有的意见。另一个学生向我指出,我应该使用ScrollPane而不是JScrollPane。是的,画布上的胡言乱语来自讲师,如果它是糟糕的代码的话。这不一定是本课程的目的。不过我会跟他提出来。
JScrollPane
是正确的组件。您不想将重组件和轻组件混合在一起更正,我将使用您的MadProgrammer,即ViewportView,因为它同样有效,而且您对混合组件非常坚持。感谢您提供的所有帮助。我会考虑所有的意见。另一个学生向我指出,我应该使用ScrollPane而不是JScrollPane。是的,画布上的胡言乱语来自讲师,如果它是糟糕的代码的话。这不一定是本课程的目的。不过我会跟他提出来。
JScrollPane
是正确的组件。你不想把重的和轻的组件混合在一起更正,我将使用你的程序员,ViewportView,因为它也可以工作,而且你非常坚持混合组件。