【问题标题】:JList is not displaying when DefaultListModel is changed using AddElement使用 AddElement 更改 DefaultListModel 时不显示 JList
【发布时间】:2013-01-23 05:18:17
【问题描述】:

我正在为组件设计课程实施一个程序,目前正在努力解决 Jlist 的简单用途。程序绘制形状并应在框架的 BorderLayout.West 的 ScrollPane 中的 JList 中显示它们。

当前程序显示 ScrollPane,但不会显示我添加到 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());

对于我刚才提出的格式不正确的问题,我深表歉意。我已经坚持了大约 4 个小时,最后两个小时花在网上寻找答案。我现在要问任何人是否在我的代码中看到问题。

【问题讨论】:

  • 我怀疑shapeList.setVisibleRowCount(-1); 可能是问题的一部分..
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jscrollpane jlist defaultlistmodel


【解决方案1】:

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

别这样……

shapeScrollPane.add(shapeList);

这样做...

shapeScrollPane.setViewportView(shapeList);

退房

另外,这个shapeList.setVisibleRowCount(-1) 吓到我了。

更新

你也不需要这个...

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

这就够了……

shapeList = new JList<String>(shapeListModel);

更新

此外,如果这与之前关闭的问题中使用的代码相同...

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

【讨论】:

  • 感谢您的所有帮助。我会考虑所有的输入。另一位学生向我指出我应该使用 ScrollPane 而不是 JScrollPane。是的,如果代码很差,画布的废话来自讲师。这不一定是课程的目的。不过我会和他一起提出来的。
  • JScrollPane 是正确的组件。您不想将重量级和重量级组件混合在一起
  • 更正,我将使用您的 MadProgrammer,即 ViewportView,因为它也可以正常工作,而且您非常坚持混合组件。
猜你喜欢
  • 2011-12-14
  • 1970-01-01
  • 2022-06-28
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
相关资源
最近更新 更多