- PR -

Swingでテキスト内の文字をスクロールしたい

1
投稿者投稿内容
かず
会議室デビュー日: 2005/01/31
投稿数: 8
お住まい・勤務地: 東京(出張)
投稿日時: 2005-02-10 09:52
こんにちは。かずです。

Swingについて誠に基本的なことなのですが、質問させてください。

JTextFieldを使用して、テキスト枠内におさまりきらないときは
スクロールバーで文字をスクロールさせてたいのですが、どうもやり方がよくわかりません。
JTableのスクロールとと同じように、JScrollPaneも使ってみたのですが
スクロールさせても文字がスクロールしてくれません。また、JScrollBarの
使い方もいまいちよくわからないのです。

そこで、みなさんに質問なのですが、JTextFieldを使用している場合、テキスト枠内に
おさまりきらないときスクロールバーで文字をスクロールさせようと考えたとき
どのような実装で実現しますか?
ちなみに、文字がテキスト枠内におさまっていても、スクロールバーは表示させて
おきたいです。

みなさん宜しくお願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-02-10 10:31
JScrollPane を使えばお望みの処理が出来ると思いますよ。
スクロールバーを常に表示しておくかどうかは setVertical/HorizontalScrollBarPlicy で設定できます。
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JScrollPane.html#setVerticalScrollBarPolicy(int)
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JScrollPane.html#setHorizontalScrollBarPolicy(int)

JBuilder を使うとこのようなプログラムは DnD で簡単に作れますので生成されたコードを確認してみると習熟が早いです。
#しかも学習目的であれば無償で使えますし
かず
会議室デビュー日: 2005/01/31
投稿数: 8
お住まい・勤務地: 東京(出張)
投稿日時: 2005-02-10 10:57
インギさん、お世話になってます。
ご返答ありがとうございます。

スクロールできました!
あと、追加質問で申し訳ありませんが、スクロールの大きさ(幅を小さく)や位置は
変更できますか?勉強不足で申し訳ありません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-02-10 17:16
残念ながら、私はスクロールバーの細かいL&Fを調整できるか存じません。
ただ、効果的な調査方法はわかります。
JBuilder でプロパティを色々いじってみることです。
いじった結果が即座に反映されますのでどんなことが出来る/出来ないのかすぐにわかります。
#必ずしも IDE プロパティエディタで全てのことが出来るわけではありませんが

スクロールバー単体では太めや細めのものをでっち上げることはできた「気がする」ので、JScrollPaneからJScrollBar を取得してプロパティをいじればできるかもしれません。
#それともJScrollPaneのレイアウトマネージャかな?

[ メッセージ編集済み 編集者: インギ 編集日時 2005-02-10 17:19 ]
かず
会議室デビュー日: 2005/01/31
投稿数: 8
お住まい・勤務地: 東京(出張)
投稿日時: 2005-02-10 21:21
インギさんご返答ありがとうございます。

JScrollPaneからJScrollBarを取得してプロパティをいじればできるような
感じがします。例えば、以下。

JScrollPane#getHorizontalScrollBar() ←スクロールバー取得
JScrollBar#setModel(BoundedRangeModel)  ←最小値、最大値、値、長さ設定
JScrollBar#setVisibleAmount(int)  ←モデルの長さ設定
JScrollBar#setEnabled(boolean)    ←コンポーネントを使用可能にし、ノブ位置変更できる

で、今スクロールバーのかわりにボタンで制御しようとコーディング中です。
JScrollPaneからJScrollBarを取得してプロパティを変更するというのも
試してみたいと思います。
かず
会議室デビュー日: 2005/01/31
投稿数: 8
お住まい・勤務地: 東京(出張)
投稿日時: 2005-02-14 09:52
ボタンで実現できました。

ボタン押下されたときにテキスト内のサイズや文字数などを計算し、
ある文字数又はサイズならばテキスト内に表示する文字を
かえるという処理を実装したら、いかにもスクロールしているような
感じにできました。

1

スキルアップ/キャリアアップ(JOB@IT)