2016-07-08 7 views
1

私は既にこれに対処する1000のスレッドがあることを知っていますが、私はすべてを試してきましたが、これまで何も働いていませんでした。私は勤務時間を記録できる小さなアプリを作っているので、私が働いているすべての時間を含む文字列があります。私は、配列を更新しようとしているし、テキストを持っているJListを更新し、リストを持っているJScrollPaneを更新します。このようにして、私はそれらを横にウィンドウに追加した直後に追加した時間を見ることができます。JScrollPaneを更新する際の問題

私はすべてのオブジェクトにrevalidate()repaint()を試しましたが、私はremoveAll()メソッドをリストとスクロールペインで試してみましたが、何も動作していないようです!私ができる唯一のことは、スクロールペインのボーダーの色を変更することです!私はレイアウトがなぜ更新するのが簡単なのか、ペイン上のテキストではないのか分かりません!

ご協力いただきありがとうございます!コードを見たい場合は投稿することができますが、これは全体のごく一部に過ぎないので少し混乱します。

+4

JList APIを読んでください。ここでは、「How to Use Lists」のリンクに実際のサンプルが含まれています。 – camickr

+2

* "私はすべてを試してきましたが、これまでには何も働いていませんでした" *少なくとも1つはうまくいくはずです。 BTW - リストを更新するときは、リスト***または***スクロールペインのいずれかに触れないでください。ちょうど 'ListModel'を変更してください。それ以外は自動的に更新されます。 –

+1

ありがとう@AndrewThompson、DefaultListModelの使い方を理解しました。 –

答えて

0

私はあなたからそれを選別しようとしています。

Jlistに時間文字列を追加しようとすると、Jscrollペインを更新します。

私は同じようにあなたのデザインビューを作成する簡単な

を通過します:

Jpanel1(card layout) 

| 
----> Jscrollpane1 

      | 
      ------>Jpanel2 

        | 
        --------> Your Jlist will be here on dynamic runtime 

、あなたはJListのの代わりにパネルを管理することができます。

しかし、ここで私はリストに行く

public void getUpdateOldWorkTimeList() 
{ 
    List<String> workTimeList; 
SwingWorker<Void, Void> mySwingWorker = new SwingWorker<Void, Void>()   { 

     @Override 
     protected Void doInBackground() throws Exception { 

      workTimeList=getMyTimeList(); // here you put your work time array 

      Thread.sleep(100); 
      return null; 
     } 
    }; 


    mySwingWorker.addPropertyChangeListener(new PropertyChangeListener() { 
     @Override 
     public void propertyChange(PropertyChangeEvent evt) { 
      if (evt.getPropertyName().equals("state")) { 
       if (evt.getNewValue() == SwingWorker.StateValue.DONE) { 

       jPanel2.removeAll(); 
       jPanel2.revalidate(); 
       jPanel2.repaint(); 

       for (int i = 0; i < workTimeList.size(); i++) { 
        jPanel2.add(new ModelJList()).setVisible(true); 
        }     
      } 
     } 
    });    

    jPanel3.setLayout(new model.WrapLayout(FlowLayout.CENTER, 1, 0)); 
    jPanel1.setBackground(new Color(0, 0, 0, 0)); 
    jScrollPane1.setBackground(new Color(0, 0, 0, 0)); 
    i 

    jScrollPane1.getVerticalScrollBar().setUnitIncrement(16); 
    int remainScroll=jScrollPane1.getVerticalScrollBar().getMaximum()- jScrollPane1.getVerticalScrollBar().getModel().getExtent(); 
     jScrollPane1.getVerticalScrollBar().setValue(remainScroll); 
     jPanel1.removeAll(); 
     jPanel1.add(jScrollPane1); 

     jPanel1.revalidate(); 
     jPanel1.repaint(); 

}

2の事は思い出さなければなりません:

  1. リストのモデルクラスを:あなたは、実装する必要があります。(あなたのルックはあなたが欲しいと感じるように)。

  2. リスト変換への配列へのgetMyTimeList()メソッド。

すでにチャットアプリケーション用に実装して、送信側と受信側のチャットを追加しました。

すべて最高

関連する問題