« カルテ表示画面のスクロール | トップページ | スタンプ箱順番入替のインターフェース »

2009年1月30日 (金)

カルテ編集画面のスクロール

Prev1 Prev2 オリジナルの状態では,一応スクロールバーは表示されているのだが(左),テキストを入力して,画面の下端まで行ってもスクロールせずに,入力部分が見えなくなってしまう(右)。どちらかが画面の下端まで行ったら自動的にスクロールして欲しいのだが,TextPane が2列あって,どちらかが画面の下端を超えたら両方の TextPane をスクロールするという動作にするのはかなり面倒くさそうだった。
After1 After2 そこで,2列の TextPane それぞれを ScrollPane に入れて,必要に応じてそれぞれにスクロールバーを出すことにした。スクロールが必要ないうちはスクロールバーはでない(左)。入力が下端に達したら,自動スクロールしてスクロールバーが出現する。スクロールバーはそれぞれの TextPane で独立している。

 

client/KartePanel3.java の作成

Source1 KartePanel2.java を参考にして KartePanel3.java を作成する。JTextPane を JScrollPane に入れて,スクロールバーはここで出すようにする。デザインでは,各 Pane をボーダーなしにして,できるだけくっつけるようにした。TextPane はマージンを 7 とった。
Source2 コードでは,スクロール行数をセットしている以外は KartePanel2.java と同じ。

 

client/KarteEditor.java の編集

KartePanel2 の代わりに,上で作成した KartePanel3 を使用する。また,そのままだとキャレットの位置がテキストの最後になるので,先頭にリセットする。
private void initialize2() {

  stateMgr = new StateMgr();
        
////↓カルテ編集画面をカスタマイズ (KartePanel3.java を使用)
  KartePanel3 kp2 = new KartePanel3();
  //KartePanel2 kp2 = new KartePanel2();
////↑
  panel2 = kp2;
private void displayModel() {
 ・
 ・
  // 内容を表示する
  if (model.getModules() != null) {
    KarteRenderer_2 renderer = new KarteRenderer_2(soaPane, pPane);
    renderer.render(model);
////↓キャレット位置を先頭にリセット
     soaPane.getTextPane().setCaretPosition(0);
     pPane.getTextPane().setCaretPosition(0);
////↑
  }

« カルテ表示画面のスクロール | トップページ | スタンプ箱順番入替のインターフェース »

OpenDolphin」カテゴリの記事