我正在实施一个组件设计课程的程序,目前我正在努力应该简单地使用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个小时,最后两个小时用于在线搜索答案。我现在要问任何人是否在我的代码中看到了问题。
答案 0 :(得分:3)
您不会在滚动窗格中“添加”组件。您需要设置它的视图端口视图。
不要这样做......
shapeScrollPane.add(shapeList);
这样做......
shapeScrollPane.setViewportView(shapeList);
结帐
此外,这shapeList.setVisibleRowCount(-1)
让我感到害怕。
<强>更新强>
你也不需要这个......
shapeList = new JList<String>(shapeListModel);
shapeList.setModel(shapeListModel);
这就足够了......
shapeList = new JList<String>(shapeListModel);
<强>更新强>
此外,如果这与以前关闭的问题中使用的代码相同......
这canvas.getGraphics()
吓坏了我!如果你的导师给你这个代码,那么他们不应该教你!