Swing/OneTouchExpandable のバックアップ(No.10)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/OneTouchExpandable へ行く。
- 1 (2010-07-05 (月) 01:22:49)
- 2 (2010-07-05 (月) 02:53:37)
- 3 (2010-07-05 (月) 15:32:16)
- 4 (2010-07-26 (月) 06:07:27)
- 5 (2012-02-21 (火) 08:06:33)
- 6 (2012-02-21 (火) 17:15:21)
- 7 (2012-02-22 (水) 18:41:04)
- 8 (2012-07-18 (水) 11:04:29)
- 9 (2012-12-29 (土) 07:39:05)
- 10 (2013-07-26 (金) 01:03:41)
- 11 (2014-10-25 (土) 23:49:53)
- 12 (2014-11-01 (土) 00:46:09)
- 13 (2015-11-22 (日) 14:01:46)
- 14 (2016-05-28 (土) 18:21:06)
- 15 (2017-08-15 (火) 14:40:07)
- 16 (2017-08-16 (水) 17:33:26)
- 17 (2017-11-02 (木) 15:34:40)
- 18 (2018-06-27 (水) 19:28:46)
- 19 (2018-11-02 (金) 19:34:31)
- 20 (2020-11-03 (火) 00:14:59)
- 21 (2022-08-20 (土) 22:15:25)
- 22 (2022-09-16 (金) 11:14:31)
- 23 (2022-11-30 (水) 07:10:22)
- 24 (2023-07-20 (木) 13:08:48)
- 25 (2025-01-03 (金) 08:57:02)
- 26 (2025-01-03 (金) 09:01:23)
- 27 (2025-01-03 (金) 09:02:38)
- 28 (2025-01-03 (金) 09:03:21)
- 29 (2025-01-03 (金) 09:04:02)
- 30 (2025-06-19 (木) 12:41:37)
- 31 (2025-06-19 (木) 12:43:47)
TITLE:JSplitPaneのディバイダを展開、収納する
Posted by aterai at 2010-07-05
JSplitPaneのディバイダを展開、収納する
`JSplitPane
`のディバイダをマウスのクリックなどで一気に展開、収納できるように設定します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, s1, s2);
splitPane.setOneTouchExpandable(true);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、`JSplitPane#setOneTouchExpandable(true)
と設定することで、ディバイダに
JButton
`が表示され、これらをクリックすることでディバイダを展開、収納することができるようになっています。
`Java 1.5
以降で
JSplitPane#setDividerLocation(0);
などとしてディバイダを収納状態にした場合、
JSplitPane
自体をリサイズすると収納されているコンポーネントの最小サイズ(
setMinimumSize
`)まで展開されてしまいます。
- 収納状態を維持したい場合、リフレクションを使って、`
BasicSplitPaneUI#setKeepHidden(true)
メソッドを実行したり、
Divider
に表示されている
JButton
`を取得実行する方法があります。
`HOME
キーや
END
キー(
F8
キーなどで
Divider
にフォーカスを移動した状態で)を押して展開、収納する方法では、
Divider
中の
JButton
`を押して展開、収納した場合と動作が異なります。
- `
HOME
キー、
END
`キーで展開、収納- 前回の状態に一旦戻らずに展開、収納される
- `
JSplitPane
自体をリサイズすると、収納されているコンポーネントの最小サイズ(
setMinimumSize
`)まで勝手に展開される- `
JSplitPane#getActionMap()#get("selectMin")
などで取得できる
Action
では、
setKeepHidden(boolean)
`が使われていない
- `
参考リンク
- Bug ID: 5006095 Need a way to programmatically stick JSplitPane divider under j2sdk 1.5
- JSplitPaneの収納状態を維持する
コメント
- ソースファイルをダウンロードして`
eclipse
でプロジェクト作成しそこにコピーしたのですが、「インポートされた
javax.jnlp
は見つかりません」と出てきて実行出来ないのですが、
javax.jnlp
`はどこに置けば良いのでしょうか? -- ニートン?- `
eclipse
はほとんど使ったことがないのでインポートの詳細(もしかして
Ant
の
build.xml
を取り込む機能がある?)が分からないのですが、
javax.jnlp
パッケージは、
${java.home}/lib/javaws.jar
にあるので、ここにクラスパスが通っていないのかもしれません。このサンプルでは、
javax.jnlp.*
は使用しないので、
build.xml
から
<pathelement location="${java.home}/lib/javaws.jar" />
を削除するか、または、
eclipse
`で新規プロジェクトを作成し、ソースコードだけ貼り付けるのが簡単だと思います。 -- aterai
- `
- >`
eclipse
`で新規プロジェクトを作成し、ソースコードだけ貼り付けるのが簡単だと思います。 その通りしていたのですが。。。結果的には`jnlp.jar
ファイルを
jdk1.6
の中から探して
eclipse
の「外部
jar
を追加」で動作いたしました。お騒がせしました。それと、この
javax.jnlpはBasicService
`関連のクラスファイルが入ってるようなので削除できないみたいです。-- ニートン?- すいません。「このサンプルでは、`
javax.jnlp.*
は使用しないので...」はデタラメで、
BasicService
が取得できるかどうかで、
Web Start
で起動したのかどうかを判断する部分を見落としていました。
Web Start
で起動した場合は、
getComponents()
でボタンを検索する方法で、ローカルから起動した場合は、リフレクションで
private
な
setKeepHidden
`メソッドを取得して実行する方法を使っています。大変失礼しましたm(__)m。 -- aterai
- すいません。「このサンプルでは、`