- - PR -
SwingのGUI作成について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-09-03 17:10
Swingを使ってウインドウを表示したいのですが、どうもうまくいきません。
現象としては一番最後にインスタンスを作ったアイテム(この場合はテキストフィールド) が setBounds を無視してフレーム内で全体化されてしまいます。 コーディングが根本的に間違っているのでしょうか?? どうかお知恵をお貸しください。
| ||||||||
|
投稿日時: 2003-09-03 17:37
Content PaneのデフォルトのLayout ManagerはBorderLayoutであり、
Container.add()メソッドにおいて、constraints(位置の基準みたいなもの)を指定しなかった場合、BorderLayout.CENTERが指定されます。 今回の場合、すべてセンターに配置され、結果、最後に追加したTextFieldのみが見えたのでしょう。 Layout Managerを指定しないという方法もありますが、やめたほうが良いでしょう(いちいち、指定するのが私には面倒なだけ。他にもなにか弊害があったような)。 直接位置を指定したければ、SpringLayoutを使用することになると思いますが、非常に使い勝手が悪いので、覚悟しておいてください。 また、直接位置を指定できるわけではありませんが、ある程度、自身で位置の指定が出来るGridBagLayoutというのもあります。これも使い勝手が良いものとは言えません(なれちまえば別かな)。 お好きな方法をどうぞ。 [ メッセージ編集済み 編集者: かずくん 編集日時 2003-09-03 17:43 ] [ メッセージ編集済み 編集者: かずくん 編集日時 2003-09-03 17:45 ] | ||||||||
|
投稿日時: 2003-09-03 17:41
そうそう、 Layoutの構築を開始させるために、setVisible(true)の前に、pack()メソッドを呼びます。
# setVisible()でもariseされるんだっけ? | ||||||||
|
投稿日時: 2003-09-03 17:59
こんにちわ。お世話になっております。
わたしの環境(WindowsXP-Pro,JDK1.4)では、それらしく配置はされているように見えました。ウィンドウのサイズを大きくすると、ボタンも二つ見えました。テキストフィールドだけはsetBoundで指定したようには配置されていませんでしたが……。 #これはBorderLayoutのCENTER内で配置されてるのかな… 3つのオブジェクトを縦に並べたいのだと思いますが、かずくんさんのおっしゃるとおりにLayoutManagerを指定するのがよいのではと思います。簡単に並べたいのならば、GridLayoutで実現できるのはないでしょうか??
| ||||||||
1
