動的 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」カテゴリの記事
- OpenDolphin: Java 25 / WildFly 38 への移行(2025.11.09)
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)


