Java 使用AddElement更改DefaultListModel时,不显示JList
我正在为一门组件设计课程实施一项计划,目前正在努力解决如何简单使用Jlist的问题。该程序绘制形状,并应在边框布局的滚动窗格中的JList中显示它们 当前程序显示滚动窗格,但不会像它应该显示的那样显示我添加到shapeListModel的对象。我想知道我是否遗漏了什么,或者我的代码是否出了问题。目前,这是所有参与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
//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,因为它也可以工作,而且你非常坚持混合组件。