下記サイトのGroupableHeaderExampleを参考にし、複数ヘッダを作成、使用していました。
しかし、バージョン1.4以降のJREでヘッダの上段部分が潰れるようになってしまい困っています。
どなたか、ご指導よろしくお願いします。
http://web.archive.org/web/20030418025148/www2.g …
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
回答ではなく、報告ですが、
JavaSE 6 update7 では上記の対策でOKでしたが、
最新の JavaSE6 update10 ではNGでした。
また、プログラム修正かなぁ...
No.2
- 回答日時:
>なぜこれで解決するのか
実は僕もよく知らないのです・・・。
「想像」+「勘」で答えてみます。
(自信度5%)
■まず前提
(1)-各swingコンポーネントのuiは、どうやって設定するのか-
たぶん、setUI()で設定される・・・気がします。
(2)-各swingコンポーネントのデフォルトのuiは、いつ決定されてるのか-
インスタンス生成時(コンストラクタ内)など・・・のような気がします。
例えばJPanelは
JPanel{
・・・
・・・
updateUI();//←最終的にsetUI()に行き着く
}
(3)-JComponentA#updateUI()って何?-
各swingコンポーネントごとに実装(※上書き)されてるようですが、
その中身はたいてい
public void updateUI() {
setUI((HogeUI)UIManager.getUI(this));
}
(4)-UIManager.getUI()って何?-
swingフレームワークが規定する、「デフォルトのUI決定ルーチン」が
きっと実装されてる・・・と思ってます。
(※たとえば、swingアプリを作った際、プログラマがなにもしなくても、
各コンポーネントにはデフォルトでなんらかのUIが適用されている)
■結論
ようするにJTableのheaderに独自のUIを適用したいなら
table=new JTable();//テーブルを作成して
header=table.getTableHeader();//テーブルのヘッダを取り出し
header.setUI(new HogeUI());//ヘッダにUIを適用
のようにすればいいということです。
ようは、それだけです。
この方法が、一番わかりやすいと思います。
■おまけ
で、ひとつの考え方として、
この(上記「結論」部で書いた、)「独自UI適用処理」を
「headerのコンストラクタ内に埋め込んでしまおう」
という方針も、悪くはないと思います。
ようするに
class HogeTableHeader{
HogeTableHeader(){
・・・
setUI(new HogeUI());
}
}
というふうに。こうすれば、headerインスタンス生成時には、
自動的にheaderのUIも、独自のものに設定されていて便利ですよね。
例のサイトのサンプルは、この考えに基づいてます。
しかし、このサンプルで使っている
Table(※JTableクラスの匿名インナークラス?)のコンストラクタは、
JTable(){
・・・
header=createDefaultTableHeader()://ヘッダ生成
//(当然、このときにheaderには独自UIがすでに設定されてる)
・・・
updateUI();//テーブルのUIを設定
}
となっていて、ここのupdateUI()メソッド(※JTable#updateUI())の実装は
updateUI(){
・・・
・・・
header.updateUI();//←jdk1.5から存在。
}
となっています。で、このheader(※JTableHeaderインスタンス?)の
updateUI()の実装は、上記(3)のような、
「デフォルトUIを設定」するような実装
になってます。
これでは「headerにせっかく独自UIを設定した」意味がないので、
ここを書きつぶし(※上書きし)ました。
書きつぶすのは、ここじゃなくても、どこでもよかったのですが、
元のサンプルの方針(※独自Headerクラス内でUI決定)に従ってみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- HTML・CSS Web font 会社のホームページを作成についてですが、webフォントを使用することを検討しており 4 2022/11/04 10:36
- Web・クリエイティブ 創作活動について質問です。 ・自分が過去に虐められたり人間関係で悩んで部活やクラスで孤立した経験等を 2 2022/10/10 22:14
- その他(パソコン・スマホ・電化製品) Webページ印刷時にヘッダー・フッターをつけたい 1 2022/04/25 21:35
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- JavaScript JSON について 1 2022/06/09 18:17
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の変数を宣言する時、同時...
-
変数名の付け方
-
private static という変数の修飾
-
SQLを連続発行する時の正しい(?...
-
生成したインスタンスを削除す...
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
-
文字列を日付に変換でParseExce...
-
C#において、同じインスタンス...
-
他のファイルの変数参照
-
変数の参照でエラーが出てしま...
-
newしないインスタンス?実体化...
-
vb.netでFAXを送信する方法
-
インスタンスのハンドル
-
エクセル(複数インスタンス)...
-
JavaのSingletonパターンのpriv...
-
フォームのCheck boxとOLEObjec...
-
フォームの存在をチェックする方法
-
フィールドでのnewとコンストラ...
-
String a = "a"; と String b =...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報