2012-11-20 47 views
0
  1. 我有例如員工考勤記錄表:
  2. 列標題將是ASC爲了一個月的日期,1/11,2/11,3/11高達30/11
  3. 行0 - >僱員姓名 - 僱員ID
  4. 行1 - >開始時間
  5. 行2 - >結束時間
  6. 行3 - >斷裂
  7. 第4排 - >爆發
  8. 排5 - >員工的名字 - 員工ID
    ...顯示多行的JTable基於搜索文本

  9. 如果我在搜索框中鍵入員工的名字,與員工姓名

  10. 行出現在上述情況下,是行0.但我需要顯示連續四個
  11. 行也是該員工的詳細信息。

  12. 有什麼辦法可以做到這一點?

+0

*「有什麼辦法,我們可以做到這一點。」 *你可以使用Shift鍵在句子的開始,並添加全停下來嗎?然後我可能會讀到.. –

+0

這聽起來不像普通表格。你有沒有考慮使用SwingX項目的'JXTreeTable',它可能更適合這個。即使是'JList'聽起來也不錯,用自定義渲染器返回多行組件 – Robin

+0

這是一個普通的JTable。對於每位員工,我希望顯示屬於該員工的所有行 – AnithaRaj

回答

1

下面是如何進行的大綱:

  • 創建的JTableemployeedetail兩個實例。

  • employee使用SINGLE_SELECTION作爲其ListSelectionModel通過setSelectionMode()

  • detailTableModel包含接收來自employee事件,如本相關example一個ListSelectionListener

  • 要在detail顯示所選擇的數據employee,的detailTableModel可以延伸AbstractTableModelfireTableDataChanged()

例如,

employee.getSelectionModel().addListSelectionListener(
     new ListSelectionListener() { 

    @Override 
    public void valueChanged(ListSelectionEvent e) { 
     if (!e.getValueIsAdjusting()) { 
      // update the detail table model based on the selected employee 
      fireTableDataChanged(); 
     } 
    } 
}); 
+0

您好,您的回答給了我一個找到解決方案的想法。我創建了兩個tablemodel,而不是創建兩個表的實例。最初該表被設置爲包含所有記錄的tablemodel1。當搜索按鈕被點擊時,我得到了匹配搜索文本的行。然後檢索循環中的行,因爲所有員工都有13條記錄。 tablemodel2僅保留被搜索的員工詳細信息。循環結束後,我爲表格設置tablemodel2。現在我添加了另一個按鈕清除搜索,它將再次分配保存所有記錄的tablemodel1。 – AnithaRaj

+0

當然可以更改模型,如[here](http://stackoverflow.com/a/8260663/230513)所示。另見[*排序和過濾*](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting)。你可以編輯你的問題以包含顯示你的方法的[sscce](http://sscce.org/),或者你可以[回答你自己的問題](http://meta.stackexchange.com/q/17463/163188 )。無論採用哪種方式,您都可以通過單擊[空對號](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)接受答案。剩下。 – trashgod

1

如果我理解正確。如果您搜索具有員工姓名的員工(比如說),那麼顯示與該員工相關的行必須發生。

AFAIK只有當您保持某些鏈接時纔可以顯示行。因爲表格行中的每個員工數據只是其他行的行。因此,創建一個帶有屬性的Employee class,並在用戶查詢EmpName時檢索該員工的所有詳細信息。

但只要設計考慮,我認爲你應該更喜歡在一個排給每行每一位員工,而沒有給所有員工姓名或全部一行開始時間。因爲在不知道它們代表什麼的情況下看到細節令人困惑。

這只是我的理解和建議。糾正我,如果我錯了。

+0

+1;第二個表格可以顯示選定員工的詳細信息,如[在此處]所示(http://stackoverflow.com/a/13480154/230513)。 – trashgod

+0

並非所有員工姓名都在一行中。 (0,0)將被僱用的值(0,1)將是開始時間值(0,2)將是結束時間,依此類推,直到val(0, 13),val(0,14)將會有第二個僱員的名字,直到價值(0,26)並且它繼續。根據選擇的日期,col 1將會jan1 col2將會是jan2等等。 – AnithaRaj