- たとえば、従業員の出席記録を含むテーブルがあります。
- 列ヘッダーは、1 / 11、2 / 11,3/11から30/11までの昇順で月の日付になります。
- 行0->従業員名-従業員ID
- 行1->開始時刻
- 行2->終了時間
- 行3->侵入
- 行4->ブレークアウト
行5->従業員名-従業員ID
..。検索ボックスに従業員名を入力すると、従業員名の行が表示されます
- 上記の場合は0行目ですが、4つ続けて表示する必要があります
その従業員の詳細である行もあります。
これを行う方法はありますか?
2 に答える
私が正しく理解していれば。従業員名 (たとえば) で従業員を検索すると、その従業員に関連する行が表示されます。
私の知る限り、行間のリンクを維持している場合にのみ、行を表示できます。テーブル行の各 Employee データは、他の行と同様に単なる行であるためです。したがってEmployee class
、属性を使用して を作成し、ユーザーが を使用してクエリを実行するたびにEmpName
、その従業員のすべての詳細を取得します。
しかし、デザインを考える限り、すべての従業員の名前を 1 行にまとめたり、すべての開始時刻を 1 行にまとめたりするのではなく、従業員ごとに 1 行ずつ記載する方がよいと思います。詳細が正確に何を表しているかを知らずに詳細を見ると混乱するからです。
これは私の理解と提案です。私が間違っている場合は修正してください。
進め方の概要は次のとおりです。
JTable
、employee
およびの 2 つのインスタンスを作成しますdetail
。その経由として
employee
使用しましょう。SINGLE_SELECTION
ListSelectionModel
setSelectionMode()
この関連する例に示すように、からイベントを受信するを
TableModel
のに含めます。detail
ListSelectionListener
employee
employee
で選択したデータを表示するにdetail
は、 のTableModel
をおよびでdetail
拡張できます。AbstractTableModel
fireTableDataChanged()
例えば、
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();
}
}
});