0

私はコンポーネント デザイン コースのプログラムを実装しており、現在 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 時間行き詰まっており、最後の 2 時間はオンラインで回答を探すのに費やされました。私が持っているコード内に問題があるかどうかを誰かに尋ねる結果になりました。

4

1 に答える 1

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()は私を怖がらせます!! インストラクターがこのコードを提供した場合、彼らはあなたに教えるべきではありません!

于 2013-01-23T05:21:32.960 に答える