« 1年前のカルテが出なくなった | トップページ | カルテ保存後ウインドウを閉じる »

2009年2月23日 (月)

動的 startNumRow

オリジナルでは TableModel の startNumRow を多めに設定してある。そのため,table を使う画面では,最初からスクロールバーが出ており,知らないうちにちょっとスクロールして,先頭の方の項目が隠れてしまったりする。startNumRow を少なめに設定するとスクロールバーは消えるが,今度は renderer が getRowCount データのある範囲しかレンダリングしてくれず,実用上は問題がないものの見た目がかっこわるい。そこで,動的に startNumRow を調節して,いつも画面全体にレンダリングして,しかもスクロールバーがでないようにした。

 

table/ObjectReflectTableModel.java の編集

//// 組込先の JTable とその親の viewport
private boolean table = false; //親テーブルのセットの有無
private javax.swing.JComponent view; // 親テーブルの viewport
private int rowHeight; // 親テーブルの行の高さ
 ・
 ・
////↓ 動的 startNumRow のため,組み込み先の table をセットする
    public void setTable(javax.swing.JTable t) {
        if (t != null) {
            rowHeight = t.getRowHeight();
            view = (JComponent) t.getParent();
            if ((rowHeight != 0) & (view != null)) table = true;
        } else table = false;
    }
////↑
 ・
 ・
  public int getRowCount() {
////↓   動的 startNumRows のため,組み込み先のテーブルがセットされていたらその親に startNumRows を合わせる
    if (table) startNumRows = view.getHeight() / rowHeight;
////↑
    return (objectList != null && objectList.size() > startNumRows) ? objectList.size()
                : startNumRows;
  }

table/ObjectTableModel.java の編集

////↓   動的 startNumRow 調整のためのコード
    private int rowHeight;
    private JComponent view;
    private boolean table;

    public void setTable(javax.swing.JTable t) {
        if (t != null) {
            rowHeight = t.getRowHeight();
            view = (JComponent) t.getParent();
            if ((rowHeight != 0) & (view != null)) table = true;
            } else table = false;
        }

    public int getRowCount() { //オリジナルの getRowCount はコメントアウト
        // 動的 startNumRows のため,組み込み先のテーブルがセットされていたらその親に startNumRows を合わせる
        if (table) {
            startNumRows = view.getHeight() / rowHeight;
        }
        int size = getObjectCount();
        return size < startNumRows ? startNumRows : size;
    }
////↑
あとは,上記の TableModel を組み込んだ画面を表示するクラスで,画面初期化部分(initComponent(), initialize()等)の最後に TableModel に対して組み込まれた JTable を教える1行を加える。
////↓   動的 startNumRows 調節のための設定
  tableModel.setTable(diagTable);
////↑
組み込むところ
  • DiagnosisDocument.java
  • DocumentHistory.java
  • AllergyInspecter.java
  • PhysicalInspecter.java
    plugin
  • PatientSearchImpl.java
  • WatingListImpl.java
  • LaboTestImporter.java
  • AppointTablePanel.java
  • OrderHistoryPanel.java

« 1年前のカルテが出なくなった | トップページ | カルテ保存後ウインドウを閉じる »

OpenDolphin」カテゴリの記事