繁体   English   中英

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

[英]JList is not displaying when DefaultListModel is changed using AddElement

我正在为“组件设计”课程实施一个程序,目前正在努力使用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个小时,最近两个小时是在网上搜索答案。 现在,我要问任何人在我的代码中是否看到问题。

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

不要这样

shapeScrollPane.add(shapeList);

做这个...

shapeScrollPane.setViewportView(shapeList);

查看

另外,这个shapeList.setVisibleRowCount(-1)使我shapeList.setVisibleRowCount(-1)

更新

您也不需要此...

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

这就足够了...

shapeList = new JList<String>(shapeListModel);

更新

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

这个canvas.getGraphics()吓坏了我! 如果您的讲师给您此代码,那么他们不应该教您!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM