GridLayoutの行列増減処理(トラブル回避方法)

 

数の増減が無いデータを扱っている間は簡単なのですが
ユーザ操作によって数が増減するようになると急に面倒になったります。

毎度、管理人イガジーです。

GridLayoutも、最初に行数・列数を決めて、そのまま使えば
良いのですが、列数や行数を変更するとなると(経験上)
トラブルことが多い気がします。
(※ 管理人の環境が Linux だからかもしれません)

GridLayoutの仕様を見ると、setColumns(列数)やsetRows(行数)
というメソッドがあるのですが、使い方がよくわかりません。

そこで、管理人としては、列数・行数を変更する場合は
いったん(パネルなどを)捨てて、新たにパネルを new して
新しい行数列数でGridLayoutを設定するようにしています。

例えば、Swing で、JPanel p0 を含んだ JScrollPane jsp があり
JFrame f0 に add されているとします。
このp0 の GridLayout(の行数・列数)を変更する場合は

jsp.remove(p0);  // 不要かもしれない
f0.remove(jsp);
p0=new JPanel(new GridLayout(rows,colms));
// p0 への詰め込み処理(略)
jsp=new JScrollPane(p0);
jsp.addMouseWheelListener(new MyJScroll());
f0.add(jsp,BorderLayout.CENTER);
f0.setVisible(true);

と、jsp 等のインスタンスを生成しなおしています。

最後の、setVisible(true) は、表示を更新するためです。
(これが無いと、内容が変わっても表示が変わらない)

AWTであれば、ScrollPane に Panel を add する形なので
Panel を remove して 新たなPanel を add しなおせば済みます。
(ScrollPane はそのまま使い続けられる。)

もっと上手な方法もあるのかもしれませんが、管理人の
トラブル回避法の例として書いておきます。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)